8009 - Pentesting Apache JServ Protocol (AJP)
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна інформація
З https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP - це протокол передачі даних. Це оптимізована версія протоколу HTTP, що дозволяє автономному веб-серверу, такому як Apache, спілкуватися з Tomcat. Історично, Apache був значно швидшим за Tomcat у обслуговуванні статичного контенту. Ідея полягає в тому, щоб дозволити Apache обслуговувати статичний контент, коли це можливо, але проксувати запит до Tomcat для контенту, пов'язаного з Tomcat.
Також цікаво:
Протокол ajp13 є пакетно-орієнтованим. Бінарний формат, ймовірно, був обраний замість більш читабельного простого тексту з причин продуктивності. Веб-сервер спілкується з контейнером сервлетів через TCP-з'єднання. Щоб зменшити витрати на створення сокетів, веб-сервер намагатиметься підтримувати постійні TCP-з'єднання з контейнером сервлетів і повторно використовувати з'єднання для кількох циклів запит/відповідь.
Порт за замовчуванням: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Це вразливість LFI, яка дозволяє отримати деякі файли, такі як WEB-INF/web.xml
, що містять облікові дані. Це експлойт для зловживання вразливістю, і порти AJP можуть бути до неї вразливими.
Виправлені версії - 9.0.31 або вище, 8.5.51 та 7.0.100.
Enumeration
Automatic
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
Брутфорс
AJP Проксі
Nginx Реверсний Проксі + AJP
Можливо спілкуватися з відкритим AJP проксі портом (8009 TCP), використовуючи модуль ajp_module
для Apache в Nginx, і отримати доступ до Tomcat Manager з цього порту, що в кінцевому підсумку може призвести до RCE на вразливому сервері.
- Почніть завантажувати Nginx з https://nginx.org/en/download.html і потім скомпілюйте його з модулем ajp:
# 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
.
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
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
Замініть TARGET-IP
в nginx.conf
на AJP IP, а потім зберіть і запустіть.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Apache AJP Proxy
Також можливо використовувати Apache AJP proxy для доступу до цього порту замість Nginx.
References
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.