mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
88 lines
4.7 KiB
Markdown
88 lines
4.7 KiB
Markdown
# 8009 - Pentesting Apache JServ Protocol (AJP)
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
## Основна інформація
|
||
|
||
З [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
|
||
|
||
> AJP - це протокол передачі даних. Це оптимізована версія протоколу HTTP, що дозволяє автономному веб-серверу, такому як [Apache](http://httpd.apache.org/), спілкуватися з Tomcat. Історично, Apache був значно швидшим за Tomcat у обслуговуванні статичного контенту. Ідея полягає в тому, щоб дозволити Apache обслуговувати статичний контент, коли це можливо, але проксувати запит до Tomcat для контенту, пов'язаного з Tomcat.
|
||
|
||
Також цікаво:
|
||
|
||
> Протокол ajp13 є пакетно-орієнтованим. Бінарний формат, ймовірно, був обраний замість більш читабельного простого тексту з причин продуктивності. Веб-сервер спілкується з контейнером сервлетів через TCP-з'єднання. Щоб зменшити витрати на створення сокетів, веб-сервер намагатиметься підтримувати постійні TCP-з'єднання з контейнером сервлетів і повторно використовувати з'єднання для кількох циклів запит/відповідь.
|
||
|
||
**Порт за замовчуванням:** 8009
|
||
```
|
||
PORT STATE SERVICE
|
||
8009/tcp open ajp13
|
||
```
|
||
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
|
||
|
||
Це вразливість LFI, яка дозволяє отримати деякі файли, такі як `WEB-INF/web.xml`, що містять облікові дані. Це [експлойт](https://www.exploit-db.com/exploits/48143) для зловживання вразливістю, і порти AJP можуть бути до неї вразливими.
|
||
|
||
Виправлені версії - 9.0.31 або вище, 8.5.51 та 7.0.100.
|
||
|
||
## Enumeration
|
||
|
||
### Automatic
|
||
```bash
|
||
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
|
||
```
|
||
### [**Брутфорс**](../generic-hacking/brute-force.md#ajp)
|
||
|
||
## AJP Проксі
|
||
|
||
### Nginx Реверсний Проксі + AJP
|
||
|
||
([Перегляньте версію з Docker](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version))
|
||
|
||
Можливо спілкуватися з відкритим AJP проксі портом (8009 TCP), використовуючи модуль `ajp_module` для Apache в Nginx, і отримати доступ до Tomcat Manager з цього порту, що в кінцевому підсумку може призвести до RCE на вразливому сервері.
|
||
|
||
- Почніть завантажувати Nginx з [https://nginx.org/en/download.html](https://nginx.org/en/download.html) і потім скомпілюйте його з модулем ajp:
|
||
```bash
|
||
# Compile Nginx with the ajp module
|
||
git clone https://github.com/dvershinin/nginx_ajp_module.git
|
||
cd nginx-version
|
||
sudo apt install libpcre3-dev
|
||
./configure --add-module=`pwd`/../nginx_ajp_module --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules
|
||
make
|
||
sudo make install
|
||
nginx -V
|
||
```
|
||
- Потім закоментуйте блок `server` і додайте наступне в блок `http` у `/etc/nginx/conf/nginx.conf`.
|
||
```json
|
||
upstream tomcats {
|
||
server <TARGET_SERVER>:8009;
|
||
keepalive 10;
|
||
}
|
||
server {
|
||
listen 80;
|
||
location / {
|
||
ajp_keep_conn on;
|
||
ajp_pass tomcats;
|
||
}
|
||
}
|
||
```
|
||
- Нарешті, запустіть nginx (`sudo nginx`) і перевірте, чи працює він, перейшовши за адресою `http://127.0.0.1`
|
||
|
||
### Nginx Dockerized-version
|
||
```bash
|
||
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
|
||
cd nginx-ajp-docker
|
||
```
|
||
Замініть `TARGET-IP` в `nginx.conf` на AJP IP, а потім зберіть і запустіть.
|
||
```bash
|
||
docker build . -t nginx-ajp-proxy
|
||
docker run -it --rm -p 80:80 nginx-ajp-proxy
|
||
```
|
||
### Apache AJP Proxy
|
||
|
||
Також можливо використовувати **Apache AJP proxy** для доступу до цього порту замість **Nginx**.
|
||
|
||
## References
|
||
|
||
- [https://github.com/yaoweibin/nginx_ajp_module](https://github.com/yaoweibin/nginx_ajp_module)
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|