mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-13 06:42:54 +00:00
202 lines
10 KiB
Markdown
202 lines
10 KiB
Markdown
# 8009 - Pentesting Protocollo Apache JServ (AJP)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Impara l'hacking di 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>
|
|
|
|
Altri modi per supportare HackTricks:
|
|
|
|
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
|
* Ottieni il [**merchandising ufficiale di 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 a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) per comunicare con hacker esperti e cacciatori di bug bounty!
|
|
|
|
**Insight sull'hacking**\
|
|
Interagisci con contenuti che approfondiscono l'emozione e le sfide dell'hacking
|
|
|
|
**Notizie sull'hacking in tempo reale**\
|
|
Resta aggiornato sul mondo dell'hacking frenetico attraverso notizie e approfondimenti in tempo reale
|
|
|
|
**Ultime notizie**\
|
|
Rimani informato sul lancio delle nuove bug bounty e sugli aggiornamenti cruciali della piattaforma
|
|
|
|
**Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi stesso!
|
|
|
|
## Informazioni di base
|
|
|
|
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 di trasmissione. È 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 inoltrare la richiesta a Tomcat per i contenuti correlati a Tomcat.
|
|
|
|
Interessante anche:
|
|
|
|
> Il protocollo ajp13 è orientato ai pacchetti. È stato presumibilmente scelto un formato binario 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 con il contenitore servlet e di riutilizzare una connessione per più cicli di richiesta/risposta.
|
|
|
|
**Porta predefinita:** 8009
|
|
```
|
|
PORT STATE SERVICE
|
|
8009/tcp open ajp13
|
|
```
|
|
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
|
|
|
|
Se la porta AJP è esposta, Tomcat potrebbe essere vulnerabile alla vulnerabilità Ghostcat. Ecco uno [sfruttamento](https://www.exploit-db.com/exploits/48143) che funziona con questo problema.
|
|
|
|
Ghostcat è una vulnerabilità LFI, ma in qualche modo limitata: è possibile estrarre solo file da un determinato percorso. Tuttavia, ciò 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 corrette a partire dalla 9.0.31, 8.5.51 e 7.0.100 hanno risolto questo problema.
|
|
|
|
## Enumerazione
|
|
|
|
### Automatica
|
|
```bash
|
|
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
|
|
```
|
|
### [**Forza bruta**](../generic-methodologies-and-resources/brute-force.md#ajp)
|
|
|
|
## Proxy AJP
|
|
|
|
### Proxy inverso Nginx & AJP
|
|
|
|
[Verifica la versione Dockerizzata](#Versione-Dockerizzata)
|
|
|
|
Quando ci imbattiamo in una porta proxy AJP aperta (8009 TCP), possiamo utilizzare Nginx con il modulo `ajp_module` per accedere al "nascosto" Tomcat Manager. Ciò può essere fatto compilando il codice sorgente di Nginx e aggiungendo il modulo richiesto, come segue:
|
|
|
|
* Scarica il codice sorgente di Nginx
|
|
* Scarica il modulo richiesto
|
|
* Compila il codice sorgente di Nginx con il modulo `ajp_module`.
|
|
* Crea un file di configurazione che punti alla porta AJP
|
|
```bash
|
|
# 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
|
|
```
|
|
Commenta l'intero blocco `server` e aggiungi le seguenti righe all'interno del blocco `http` in `/etc/nginx/conf/nginx.conf`.
|
|
```shell-session
|
|
upstream tomcats {
|
|
server <TARGET_SERVER>:8009;
|
|
keepalive 10;
|
|
}
|
|
server {
|
|
listen 80;
|
|
location / {
|
|
ajp_keep_conn on;
|
|
ajp_pass tomcats;
|
|
}
|
|
}
|
|
```
|
|
Avvia Nginx e verifica se tutto funziona correttamente emettendo una richiesta cURL al tuo host locale.
|
|
```html
|
|
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>
|
|
```
|
|
### Versione Dockerizzata di Nginx
|
|
```bash
|
|
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
|
|
cd nginx-ajp-docker
|
|
```
|
|
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
|
|
```
|
|
### Proxy Apache AJP
|
|
|
|
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.
|
|
```bash
|
|
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
|
|
```
|
|
Questa configurazione 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 di Metasploit Tomcat a `127.0.0.1:80`, è possibile assumere efficacemente il controllo del sistema prescelto.
|
|
```bash
|
|
msf exploit(tomcat_mgr_deploy) > show options
|
|
```
|
|
## Riferimenti
|
|
* [https://github.com/yaoweibin/nginx_ajp_module](https://github.com/yaoweibin/nginx_ajp_module)
|
|
* [https://academy.hackthebox.com/module/145/section/1295](https://academy.hackthebox.com/module/145/section/1295)
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Unisciti al server [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) per comunicare con hacker esperti e cacciatori di bug!
|
|
|
|
**Insight sull'hacking**\
|
|
Interagisci con contenuti che approfondiscono l'emozione e le sfide dell'hacking
|
|
|
|
**Notizie sull'hacking in tempo reale**\
|
|
Rimani aggiornato sul mondo dell'hacking frenetico attraverso notizie e approfondimenti in tempo reale
|
|
|
|
**Ultime notizie**\
|
|
Rimani informato sul lancio delle nuove ricompense per i bug e sugli aggiornamenti cruciali della piattaforma
|
|
|
|
**Unisciti a noi su** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e inizia a collaborare con i migliori hacker oggi stesso!
|
|
|
|
<details>
|
|
|
|
<summary><strong>Impara l'hacking di 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>
|
|
|
|
Altri modi per supportare HackTricks:
|
|
|
|
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
|
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
|
* **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 repository di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|