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

216 lines
10 KiB
Markdown
Raw Normal View History

# 8009 - Test di penetrazione del Protocollo Apache JServ (AJP)
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Altri modi per supportare HackTricks:
2024-01-03 10:42:55 +00:00
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:03:23 +00:00
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
2024-02-10 13:03:23 +00:00
Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) per comunicare con hacker esperti e cacciatori di bug bounty!
2023-02-27 09:28:45 +00:00
**Approfondimenti sull'hacking**\
Interagisci con contenuti che esplorano l'emozione e le sfide dell'hacking
2023-02-27 09:28:45 +00:00
2024-02-10 13:03:23 +00:00
**Notizie sull'hacking in tempo reale**\
Resta aggiornato con il mondo dell'hacking in rapida evoluzione attraverso notizie e approfondimenti in tempo reale
2023-07-14 15:03:41 +00:00
**Ultime Annunci**\
Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma
2023-07-14 15:03:41 +00:00
**Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi!
2022-11-05 09:07:43 +00:00
## Informazioni di Base
2024-02-10 13:03:23 +00:00
Da: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
> AJP è un protocollo wire. È una versione ottimizzata del protocollo HTTP che consente a un server web autonomo come [Apache](http://httpd.apache.org/) di comunicare con Tomcat. Storicamente, Apache è stato molto più veloce di Tomcat nel servire contenuti statici. L'idea è quella di consentire ad Apache di servire i contenuti statici quando possibile, ma di instradare la richiesta a Tomcat per i contenuti correlati a Tomcat.
2024-02-10 13:03:23 +00:00
Interessante anche:
> Il protocollo ajp13 è orientato ai pacchetti. Un formato binario è stato presumibilmente scelto rispetto al testo normale più leggibile per motivi di prestazioni. Il server web comunica con il contenitore servlet tramite connessioni TCP. Per ridurre il costoso processo di creazione del socket, il server web cercherà di mantenere connessioni TCP persistenti al contenitore servlet e di riutilizzare una connessione per cicli di richiesta/risposta multipli
2024-02-10 13:03:23 +00:00
**Porta predefinita:** 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)
Se la porta AJP è esposta, Tomcat potrebbe essere vulnerabile alla vulnerabilità Ghostcat. Ecco uno [exploit](https://www.exploit-db.com/exploits/48143) che funziona con questo problema.
Ghostcat è una vulnerabilità LFI, ma in qualche modo limitata: solo i file da un determinato percorso possono essere recuperati. Tuttavia, questo può includere file come `WEB-INF/web.xml` che possono rivelare informazioni importanti come le credenziali per l'interfaccia di Tomcat, a seconda della configurazione del server.
Le versioni patchate a partire da 9.0.31, 8.5.51 e 7.0.100 hanno risolto questo problema.
2024-02-10 13:03:23 +00:00
## Enumerazione
### Automatico
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
```
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#ajp)
2022-10-03 13:43:01 +00:00
2024-02-10 13:03:23 +00:00
## Proxy AJP
2022-10-03 13:43:01 +00:00
### Nginx Reverse Proxy & AJP
[Controlla la versione Dockerizzata](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version)
2022-10-03 13:43:01 +00:00
Quando ci imbattiamo in una porta proxy AJP aperta (8009 TCP), possiamo utilizzare Nginx con il `modulo ajp` per accedere al Tomcat Manager "nascosto". Questo può essere fatto compilando il codice sorgente di Nginx e aggiungendo il modulo richiesto, come segue:
2024-02-10 13:03:23 +00:00
* Scarica il codice sorgente di Nginx
* Scarica il modulo richiesto
* Compila il codice sorgente di Nginx con il `modulo ajp`.
2024-02-10 13:03:23 +00:00
* Crea un file di configurazione che punti alla porta 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
```
```diff
- server {
- listen 80 default_server;
- server_name example.com;
- location / {
- root /var/www/html;
- index index.html;
- }
- }
+ upstream backend {
+ server 127.0.0.1:8009;
+ }
```
2022-10-03 13:43:01 +00:00
```shell-session
upstream tomcats {
2024-02-10 13:03:23 +00:00
server <TARGET_SERVER>:8009;
keepalive 10;
}
2022-10-03 13:43:01 +00:00
server {
2024-02-10 13:03:23 +00:00
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
2022-10-03 13:43:01 +00:00
}
```
Avvia Nginx e verifica che tutto funzioni correttamente emettendo una richiesta cURL al tuo host locale.
2022-10-03 13:43:01 +00:00
```html
sudo nginx
curl http://127.0.0.1:80
<!DOCTYPE html>
<html lang="en">
2024-02-10 13:03:23 +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>
```
2024-02-10 13:03:23 +00:00
### Versione Dockerizzata di Nginx
```bash
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
```
2024-02-10 13:03:23 +00:00
Sostituisci `TARGET-IP` in `nginx.conf` con l'IP AJP, quindi compila ed esegui.
```bash
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
```
2024-02-10 13:03:23 +00:00
### Proxy Apache AJP
2024-02-10 13:03:23 +00:00
Incontrare una porta aperta 8009 senza altre porte web accessibili è raro. Tuttavia, è ancora possibile sfruttarla utilizzando **Metasploit**. Sfruttando **Apache** come proxy, le richieste possono essere reindirizzate a **Tomcat** sulla porta 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-02-10 13:03:23 +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
```
Questo setup offre il potenziale per eludere i sistemi di rilevamento e prevenzione delle intrusioni (IDS/IPS) a causa della **natura binaria del protocollo AJP**, anche se questa capacità non è stata verificata. Indirizzando un normale exploit Tomcat di Metasploit a `127.0.0.1:80`, è possibile assumere efficacemente il controllo del sistema preso di mira.
2024-02-08 21:36:35 +00:00
```bash
msf exploit(tomcat_mgr_deploy) > show options
```
2024-02-10 13:03:23 +00:00
## Riferimenti
* [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
2024-02-10 13:03:23 +00:00
Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) per comunicare con hacker esperti e cacciatori di bug!
2022-11-05 09:07:43 +00:00
**Approfondimenti sull'Hacking**\
Interagisci con contenuti che esplorano l'emozione e le sfide dell'hacking
2023-02-27 09:28:45 +00:00
**Notizie sull'Hacking in Tempo Reale**\
Resta aggiornato sul mondo dell'hacking frenetico attraverso notizie e approfondimenti in tempo reale
2023-02-27 09:28:45 +00:00
**Ultime Comunicazioni**\
Rimani informato sui nuovi bug bounty in arrivo e sugli aggiornamenti cruciali della piattaforma
2023-02-27 09:28:45 +00:00
**Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi!
2022-11-05 09:07:43 +00:00
2022-10-03 13:43:01 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Altri modi per supportare HackTricks:
2024-01-03 10:42:55 +00:00
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
2022-04-28 16:01:33 +00:00
</details>