# 8009 - Pentesting Protocolo Apache JServ (AJP)
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: * Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Comparte tus 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.
Únete al servidor de [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para comunicarte con hackers experimentados y cazadores de recompensas por errores! **Perspectivas de Hacking**\ Involúcrate con contenido que profundiza en la emoción y desafíos del hacking **Noticias de Hacking en Tiempo Real**\ Mantente actualizado con el mundo del hacking a través de noticias e información en tiempo real **Últimos Anuncios**\ Mantente informado sobre los nuevos programas de recompensas por errores y actualizaciones importantes de plataformas **Únete a nosotros en** [**Discord**](https://discord.com/invite/N3FrSbmwdy) y comienza a colaborar con los mejores hackers hoy! ## Información Básica Desde: [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 cable. Es una versión optimizada del protocolo HTTP que permite 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 redirija la solicitud a Tomcat para el contenido relacionado con Tomcat. También interesante: > El protocolo ajp13 está orientado a paquetes. Se eligió un formato binario en lugar del 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 predeterminado:** 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 de 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 por encima de 9.0.31, 8.5.51 y 7.0.100 han solucionado este problema. ## Enumeración ### Automática ```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 & AJP [Ver la versión en Docker](#Dockerized-version) Cuando nos encontramos con un puerto de proxy AJP abierto (8009 TCP), podemos usar Nginx con el módulo `ajp_module` para acceder al "oculto" Tomcat Manager. Esto se puede hacer compilando el código fuente de Nginx y agregando 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 ``` ```shell-session upstream tomcats { server :8009; keepalive 10; } server { listen 80; location / { ajp_keep_conn on; ajp_pass tomcats; } } ``` Inicia Nginx y verifica si todo está funcionando correctamente emitiendo una solicitud cURL a tu 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 de Nginx en Docker ```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, luego construya y ejecute. ``` bash docker build . -t nginx-ajp-proxy docker run -it --rm -p 80:80 nginx-ajp-proxy ``` ### Proxy de Apache AJP Encontrar un puerto abierto 8009 sin otros puertos web accesibles es raro. Sin embargo, aún es posible explotarlo utilizando **Metasploit**. Al aprovechar **Apache** como 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 ``` Este setup ofrece el potencial de evadir 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 regular de Tomcat de Metasploit a `127.0.0.1:80`, puedes tomar control 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**\ Involúcrate con contenido que explora la emoción y los desafíos del hacking **Noticias de Hacking en Tiempo Real**\ Mantente al día con el mundo del hacking a través de noticias e información en tiempo real **Últimos Anuncios**\ Mantente informado sobre los nuevos programas de recompensas por bugs y actualizaciones importantes de plataformas **Únete a nosotros en** [**Discord**](https://discord.com/invite/N3FrSbmwdy) y comienza a colaborar con los mejores hackers hoy!
Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: * Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).