8009 - Pentesting Apache JServ Protocol (AJP)
Reading time: 4 minutes
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
Informazioni di base
Da https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP è un protocollo di rete. È una versione ottimizzata del protocollo HTTP per consentire a un server web autonomo come Apache di comunicare con Tomcat. Storicamente, Apache è stato molto più veloce di Tomcat nel servire contenuti statici. L'idea è di lasciare che Apache serva i contenuti statici quando possibile, ma di fare da proxy per la richiesta ai contenuti relativi a Tomcat.
Anche interessante:
Il protocollo ajp13 è orientato ai pacchetti. Un formato binario è presumibilmente stato scelto rispetto al testo semplice più leggibile per motivi di prestazioni. Il server web comunica con il contenitore servlet tramite connessioni TCP. Per ridurre il costoso processo di creazione di socket, il server web tenterà di mantenere connessioni TCP persistenti con il contenitore servlet e di riutilizzare una connessione per più cicli di richiesta/riposta.
Porta predefinita: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Questa è una vulnerabilità LFI che consente di ottenere alcuni file come WEB-INF/web.xml
che contiene credenziali. Questo è un exploit per abusare della vulnerabilità e le porte AJP esposte potrebbero essere vulnerabili ad essa.
Le versioni corrette sono 9.0.31 o superiori, 8.5.51 e 7.0.100.
Enumerazione
Automatica
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
Forza bruta
Proxy AJP
Nginx Reverse Proxy + AJP
(Controlla la versione Dockerizzata)
È possibile comunicare con una porta proxy AJP aperta (8009 TCP) utilizzando il modulo apache ajp_module
di Nginx e accedere al Tomat Manager da questa porta, il che potrebbe portare a RCE nel server vulnerabile.
- Inizia a scaricare Nginx da https://nginx.org/en/download.html e poi compila con il modulo ajp:
# Compile Nginx with the ajp module
git clone https://github.com/dvershinin/nginx_ajp_module.git
cd nginx-version
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
- Quindi, commenta il blocco
server
e aggiungi quanto segue nel bloccohttp
in/etc/nginx/conf/nginx.conf
.
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
- Infine, avvia nginx (
sudo nginx
) e controlla che funzioni accedendo ahttp://127.0.0.1
Versione Dockerizzata di Nginx
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
Sostituisci TARGET-IP
in nginx.conf
con l'IP AJP, quindi costruisci ed esegui.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Apache AJP Proxy
È anche possibile utilizzare un Apache AJP proxy per accedere a quella porta invece di Nginx.
References
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.