hacktricks/network-services-pentesting/8009-pentesting-apache-jserv-protocol-ajp.md

206 lines
12 KiB
Markdown
Raw Normal View History

# 8009 - Pentesting Apache JServ Protocol (AJP)
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2024-01-03 10:42:55 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters!
2023-02-27 09:28:45 +00:00
**Hacking Insights**\
Engage with content that delves into the thrill and challenges of hacking
2023-02-27 09:28:45 +00:00
**Real-Time Hack News**\
Keep up-to-date with fast-paced hacking world through real-time news and insights
2023-07-14 15:03:41 +00:00
**Latest Announcements**\
Stay informed with the newest bug bounties launching and crucial platform updates
2023-07-14 15:03:41 +00:00
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today!
2022-11-05 09:07:43 +00:00
## Basic Information
From: [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.
2024-03-29 18:49:46 +00:00
Також цікаво:
> Протокол ajp13 є пакетно-орієнтованим. Бінарний формат, ймовірно, був обраний замість більш читабельного простого тексту з причин продуктивності. Веб-сервер спілкується з контейнером сервлетів через TCP-з'єднання. Щоб зменшити витрати на створення сокетів, веб-сервер намагатиметься підтримувати постійні TCP-з'єднання з контейнером сервлетів і повторно використовувати з'єднання для кількох циклів запит/відповідь.
**Default port:** 8009
2022-05-01 13:25:53 +00:00
```
PORT STATE SERVICE
8009/tcp open ajp13
```
2022-05-01 13:25:53 +00:00
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
Якщо порт AJP відкритий, Tomcat може бути вразливим до уразливості Ghostcat. Ось [експлойт](https://www.exploit-db.com/exploits/48143), який працює з цією проблемою.
Ghostcat є уразливістю LFI, але дещо обмеженою: можна отримати лише файли з певного шляху. Проте, це може включати файли, такі як `WEB-INF/web.xml`, які можуть витікати важливу інформацію, таку як облікові дані для інтерфейсу Tomcat, залежно від налаштувань сервера.
Виправлені версії на рівні 9.0.31, 8.5.51 та 7.0.100 усунули цю проблему.
## Enumeration
### Automatic
2022-10-03 13:43:01 +00:00
```bash
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
2022-05-01 13:25:53 +00:00
```
2022-10-03 13:43:01 +00:00
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#ajp)
## AJP Proxy
2022-10-03 13:43:01 +00:00
### Nginx Reverse Proxy & AJP
[Перегляньте версію з Docker](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version)
2022-10-03 13:43:01 +00:00
Коли ми натрапляємо на відкритий порт AJP проксі (8009 TCP), ми можемо використовувати Nginx з `ajp_module`, щоб отримати доступ до "прихованого" Tomcat Manager. Це можна зробити, скомпілювавши вихідний код Nginx і додавши необхідний модуль, наступним чином:
2024-03-29 18:49:46 +00:00
* Завантажте вихідний код Nginx
* Завантажте необхідний модуль
* Скомпіліруйте вихідний код Nginx з `ajp_module`.
* Створіть файл конфігурації, що вказує на порт AJP
```bash
2022-10-03 13:43:01 +00:00
# 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`.
2022-10-03 13:43:01 +00:00
```shell-session
upstream tomcats {
2024-03-29 18:49:46 +00:00
server <TARGET_SERVER>:8009;
keepalive 10;
}
2022-10-03 13:43:01 +00:00
server {
2024-03-29 18:49:46 +00:00
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
2022-10-03 13:43:01 +00:00
}
```
Запустіть Nginx і перевірте, чи все працює правильно, надіславши запит cURL до вашого локального хоста.
2022-10-03 13:43:01 +00:00
```html
sudo nginx
curl http://127.0.0.1:80
<!DOCTYPE html>
<html lang="en">
2024-03-29 18:49:46 +00:00
<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>
2022-10-03 13:43:01 +00:00
<SNIP>
```
### 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
Зустріти відкритий порт 8009 без інших доступних веб-портів рідко. Однак, все ще можливо його експлуатувати, використовуючи **Metasploit**. Використовуючи **Apache** як проксі, запити можна перенаправити на **Tomcat** на порту 8009.
2024-02-08 21:36:35 +00:00
```bash
sudo apt-get install libapache2-mod-jk
sudo vim /etc/apache2/apache2.conf # append the following line to the config
2024-03-29 18:49:46 +00:00
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/
2024-02-08 21:36:35 +00:00
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo systemctl restart apache2
```
Ця конфігурація пропонує можливість обійти системи виявлення та запобігання вторгненням (IDS/IPS) через **бінарну природу протоколу AJP**, хоча ця можливість не була перевірена. Направивши звичайний експлойт Metasploit Tomcat на `127.0.0.1:80`, ви можете ефективно захопити контроль над цільовою системою.
2024-02-08 21:36:35 +00:00
```bash
msf exploit(tomcat_mgr_deploy) > show options
```
2024-03-29 18:49:46 +00:00
## Посилання
* [https://github.com/yaoweibin/nginx\_ajp\_module](https://github.com/yaoweibin/nginx\_ajp\_module)
2022-10-03 13:43:01 +00:00
* [https://academy.hackthebox.com/module/145/section/1295](https://academy.hackthebox.com/module/145/section/1295)
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2023-07-14 15:03:41 +00:00
Приєднуйтесь до [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
2022-11-05 09:07:43 +00:00
**Інсайти з хакінгу**\
Залучайтеся до контенту, який занурюється в захоплення та виклики хакінгу
2023-02-27 09:28:45 +00:00
**Новини про хакінг у реальному часі**\
Будьте в курсі швидкоплинного світу хакінгу через новини та інсайти в реальному часі
2023-02-27 09:28:45 +00:00
**Останні оголошення**\
Залишайтеся в курсі нових програм винагород за вразливості та важливих оновлень платформ
2023-02-27 09:28:45 +00:00
**Приєднуйтесь до нас на** [**Discord**](https://discord.com/invite/N3FrSbmwdy) і почніть співпрацювати з провідними хакерами вже сьогодні!
2022-11-05 09:07:43 +00:00
{% hint style="success" %}
Вчіться та практикуйте хакінг AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Вчіться та практикуйте хакінг GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Підтримати HackTricks</summary>
2024-01-03 10:42:55 +00:00
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи в телеграмі**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}