8009 - Pentesting Apache JServ Protocol (AJP)
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Información Básica
De 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 proxy 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
servery añade lo siguiente en el bloquehttpen/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 funcione 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
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


