# 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 un 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 leak 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:
* Descarga el c贸digo fuente de Nginx
* Descarga el m贸dulo requerido
* Compila el c贸digo fuente de Nginx con el `ajp_module`.
* Crea 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
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 recompensas por errores!
**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 errores 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 %}