# 8009 - Pentesting Apache JServ Protocol (AJP) {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 馃挰 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
Join [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server to communicate with experienced hackers and bug bounty hunters! **Hacking Insights**\ Engage with content that delves into the thrill and challenges of hacking **Real-Time Hack News**\ Keep up-to-date with fast-paced hacking world through real-time news and insights **Latest Announcements**\ Stay informed with the newest bug bounties launching and crucial platform updates **Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) and start collaborating with top hackers today! ## Basic Information From: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](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](http://httpd.apache.org/) 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'](https://www.chaitin.cn/en/ghostcat) Si el puerto AJP est谩 expuesto, Tomcat podr铆a ser susceptible a la vulnerabilidad Ghostcat. Aqu铆 hay un [exploit](https://www.exploit-db.com/exploits/48143) que funciona con este problema. Ghostcat es una vulnerabilidad LFI, pero algo restringida: solo se pueden extraer archivos de una cierta ruta. A煤n as铆, esto puede incluir archivos como `WEB-INF/web.xml` que pueden filtrar informaci贸n importante como credenciales para la interfaz de Tomcat, dependiendo de la configuraci贸n del servidor. Las versiones parcheadas en o superiores a 9.0.31, 8.5.51 y 7.0.100 han solucionado este problema. ## Enumeration ### Automatic ```bash nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 ``` ### [**Fuerza bruta**](../generic-methodologies-and-resources/brute-force.md#ajp) ## Proxy AJP ### Proxy inverso Nginx y AJP [Consulta la versi贸n Dockerizada](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version) Cuando nos encontramos con un puerto proxy AJP abierto (8009 TCP), podemos usar Nginx con el `ajp_module` para acceder al "oculto" Tomcat Manager. Esto se puede hacer compilando el c贸digo fuente de Nginx y a帽adiendo el m贸dulo requerido, de la siguiente manera: * Descargar el c贸digo fuente de Nginx * Descargar el m贸dulo requerido * Compilar el c贸digo fuente de Nginx con el `ajp_module`. * Crear un archivo de configuraci贸n que apunte al puerto 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 ``` Comente todo el bloque `server` y agregue las siguientes l铆neas dentro del bloque `http` en `/etc/nginx/conf/nginx.conf`. ```shell-session upstream tomcats { server :8009; keepalive 10; } server { listen 80; location / { ajp_keep_conn on; ajp_pass tomcats; } } ``` Inicie Nginx y verifique si todo est谩 funcionando correctamente emitiendo una solicitud cURL a su host local. ```html sudo nginx curl http://127.0.0.1:80 Apache Tomcat/X.X.XX

Apache Tomcat/X.X.XX

If you're seeing this, you've successfully installed Tomcat. Congratulations!

``` ### Versi贸n Dockerizada de Nginx ```bash 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. ```bash docker build . -t nginx-ajp-proxy docker run -it --rm -p 80:80 nginx-ajp-proxy ``` ### Apache AJP Proxy Encontrar un puerto 8009 abierto sin otros puertos web accesibles es raro. Sin embargo, a煤n es posible explotarlo utilizando **Metasploit**. Al aprovechar **Apache** como un proxy, las solicitudes pueden ser redirigidas a **Tomcat** en el puerto 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 Order deny,allow Deny from all Allow from localhost ProxyPass / ajp://HOST:8009/ ProxyPassReverse / ajp://HOST:8009/ sudo a2enmod proxy_http sudo a2enmod proxy_ajp sudo systemctl restart apache2 ``` Esta configuraci贸n ofrece el potencial de eludir los sistemas de detecci贸n y prevenci贸n de intrusiones (IDS/IPS) debido a la **naturaleza binaria del protocolo AJP**, aunque esta capacidad no ha sido verificada. Al dirigir un exploit de Tomcat de Metasploit regular a `127.0.0.1:80`, puedes apoderarte efectivamente del sistema objetivo. ```bash msf exploit(tomcat_mgr_deploy) > show options ``` ## Referencias * [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)
隆脷nete al servidor de [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para comunicarte con hackers experimentados y cazadores de bugs! **Perspectivas de Hacking**\ Participa en contenido que profundiza en la emoci贸n y los desaf铆os del hacking **Noticias de Hackeo en Tiempo Real**\ Mantente al d铆a con el mundo del hacking de ritmo r谩pido a trav茅s de noticias e informaci贸n en tiempo real **脷ltimos Anuncios**\ Mantente informado sobre las nuevas recompensas por bugs que se lanzan y actualizaciones cruciales de la plataforma **脷nete a nosotros en** [**Discord**](https://discord.com/invite/N3FrSbmwdy) y comienza a colaborar con los mejores hackers hoy mismo! {% hint style="success" %} Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Apoya a HackTricks * Revisa los [**planes de suscripci贸n**](https://github.com/sponsors/carlospolop)! * **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** * **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
{% endhint %}