8009 - Pentesting Apache JServ Protocol (AJP)
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Informaci贸n B谩sica
From https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP es un protocolo de red. Es una versi贸n optimizada del protocolo HTTP para permitir que un servidor web independiente como Apache se comunique con Tomcat. Hist贸ricamente, Apache ha sido mucho m谩s r谩pido que Tomcat al servir contenido est谩tico. La idea es permitir que Apache sirva el contenido est谩tico cuando sea posible, pero que haga proxy de la solicitud a Tomcat para el contenido relacionado con Tomcat.
Tambi茅n interesante:
El protocolo ajp13 es orientado a paquetes. Se eligi贸 un formato binario presumiblemente sobre el texto plano m谩s legible por razones de rendimiento. El servidor web se comunica con el contenedor de servlets a trav茅s de conexiones TCP. Para reducir el costoso proceso de creaci贸n de sockets, el servidor web intentar谩 mantener conexiones TCP persistentes con el contenedor de servlets y reutilizar una conexi贸n para m煤ltiples ciclos de solicitud/respuesta.
Puerto por defecto: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Esta es una vulnerabilidad LFI que permite obtener algunos archivos como WEB-INF/web.xml
que contiene credenciales. Este es un exploit para abusar de la vulnerabilidad y los puertos expuestos AJP podr铆an ser vulnerables a ella.
Las versiones corregidas son 9.0.31 o superiores, 8.5.51, y 7.0.100.
Enumeraci贸n
Autom谩tico
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
Fuerza bruta
Proxy AJP
Proxy inverso Nginx + AJP
(Consulta la versi贸n Dockerizada)
Es posible comunicarse con un puerto proxy AJP abierto (8009 TCP) utilizando el m贸dulo ajp_module
de Apache en Nginx y acceder al Tomcat Manager desde este puerto, lo que podr铆a llevar a RCE en el servidor vulnerable.
- Comienza a descargar Nginx desde https://nginx.org/en/download.html y luego comp铆lalo con el m贸dulo 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
- Luego, comenta el bloque
server
y a帽ade lo siguiente en el bloquehttp
en/etc/nginx/conf/nginx.conf
.
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
- Finalmente, inicia nginx (
sudo nginx
) y verifica que funciona accediendo ahttp://127.0.0.1
Versi贸n Dockerizada de Nginx
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
Reemplace TARGET-IP
en nginx.conf
con la IP de AJP y luego construya y ejecute.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Proxy AJP de Apache
Tambi茅n es posible utilizar un proxy AJP de Apache para acceder a ese puerto en lugar de Nginx.
Referencias
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.