# 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!
## Podstawowe informacje
From: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
> AJP to protok贸艂 sieciowy. Jest to zoptymalizowana wersja protoko艂u HTTP, kt贸ra pozwala samodzielnemu serwerowi internetowemu, takiemu jak [Apache](http://httpd.apache.org/), komunikowa膰 si臋 z Tomcatem. Historycznie, Apache by艂 znacznie szybszy ni偶 Tomcat w serwowaniu statycznej zawarto艣ci. Idea polega na tym, aby pozwoli膰 Apache'owi serwowa膰 statyczn膮 zawarto艣膰, gdy to mo偶liwe, ale przekazywa膰 偶膮danie do Tomcata w przypadku zawarto艣ci zwi膮zanej z Tomcatem.
R贸wnie偶 interesuj膮ce:
> Protok贸艂 ajp13 jest zorientowany na pakiety. Format binarny zosta艂 prawdopodobnie wybrany zamiast bardziej czytelnego tekstu zwyk艂ego z powod贸w wydajno艣ciowych. Serwer internetowy komunikuje si臋 z kontenerem servlet贸w za po艣rednictwem po艂膮cze艅 TCP. Aby ograniczy膰 kosztowny proces tworzenia gniazd, serwer internetowy b臋dzie stara艂 si臋 utrzymywa膰 trwa艂e po艂膮czenia TCP z kontenerem servlet贸w i ponownie wykorzystywa膰 po艂膮czenie do wielu cykli 偶膮danie/odpowied藕.
**Domy艣lny port:** 8009
```
PORT STATE SERVICE
8009/tcp open ajp13
```
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
Je艣li port AJP jest wystawiony, Tomcat mo偶e by膰 podatny na luk臋 Ghostcat. Oto [eksploit](https://www.exploit-db.com/exploits/48143), kt贸ry dzia艂a z tym problemem.
Ghostcat to luka LFI, ale w pewnym stopniu ograniczona: mo偶na pobiera膰 tylko pliki z okre艣lonej 艣cie偶ki. Mimo to, mog膮 to by膰 pliki takie jak `WEB-INF/web.xml`, kt贸re mog膮 ujawnia膰 wa偶ne informacje, takie jak dane uwierzytelniaj膮ce do interfejsu Tomcat, w zale偶no艣ci od konfiguracji serwera.
Poprawione wersje w wersji 9.0.31 lub wy偶szej, 8.5.51 i 7.0.100 naprawi艂y ten problem.
## Enumeration
### Automatic
```bash
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009
```
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#ajp)
## AJP Proxy
### Nginx Reverse Proxy & AJP
[Sprawd藕 wersj臋 Dockerow膮](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version)
Kiedy napotykamy otwarty port proxy AJP (8009 TCP), mo偶emy u偶y膰 Nginx z `ajp_module`, aby uzyska膰 dost臋p do "ukrytego" Mened偶era Tomcat. Mo偶na to zrobi膰, kompiluj膮c kod 藕r贸d艂owy Nginx i dodaj膮c wymagany modu艂, w nast臋puj膮cy spos贸b:
* Pobierz kod 藕r贸d艂owy Nginx
* Pobierz wymagany modu艂
* Skompiluj kod 藕r贸d艂owy Nginx z `ajp_module`.
* Utw贸rz plik konfiguracyjny wskazuj膮cy na port 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
```
Skomentuj ca艂y blok `server` i dodaj nast臋puj膮ce linie wewn膮trz bloku `http` w `/etc/nginx/conf/nginx.conf`.
```shell-session
upstream tomcats {
server :8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
```
Uruchom Nginx i sprawd藕, czy wszystko dzia艂a poprawnie, wydaj膮c 偶膮danie cURL do swojego lokalnego hosta.
```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!
```
### Nginx w wersji Dockerowej
```bash
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
```
Zamie艅 `TARGET-IP` w `nginx.conf` na AJP IP, a nast臋pnie zbuduj i uruchom.
```bash
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
```
### Apache AJP Proxy
Napotkanie otwartego portu 8009 bez innych dost臋pnych port贸w webowych jest rzadkie. Jednak nadal mo偶liwe jest jego wykorzystanie za pomoc膮 **Metasploit**. Wykorzystuj膮c **Apache** jako proxy, 偶膮dania mog膮 by膰 przekierowywane do **Tomcat** na porcie 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
```
To ustawienie oferuje potencja艂 do obej艣cia system贸w wykrywania i zapobiegania w艂amaniom (IDS/IPS) z powodu **binarnej natury protoko艂u AJP**, chocia偶 ta zdolno艣膰 nie zosta艂a zweryfikowana. Kieruj膮c regularny exploit Metasploit Tomcat do `127.0.0.1:80`, mo偶esz skutecznie przej膮膰 kontrol臋 nad docelowym systemem.
```bash
msf exploit(tomcat_mgr_deploy) > show options
```
## References
* [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)
Do艂膮cz do [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), aby komunikowa膰 si臋 z do艣wiadczonymi hackerami i 艂owcami bug贸w!
**Hacking Insights**\
Zaanga偶uj si臋 w tre艣ci, kt贸re zg艂臋biaj膮 dreszczyk emocji i wyzwania zwi膮zane z hackingiem
**Real-Time Hack News**\
B膮d藕 na bie偶膮co z dynamicznym 艣wiatem hackingu dzi臋ki wiadomo艣ciom i spostrze偶eniom w czasie rzeczywistym
**Latest Announcements**\
B膮d藕 informowany o najnowszych programach bug bounty oraz istotnych aktualizacjach platformy
**Do艂膮cz do nas na** [**Discord**](https://discord.com/invite/N3FrSbmwdy) i zacznij wsp贸艂pracowa膰 z najlepszymi hackerami ju偶 dzi艣!
{% hint style="success" %}
Ucz si臋 i 膰wicz Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Ucz si臋 i 膰wicz Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Wsparcie HackTricks
* Sprawd藕 [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
* **Do艂膮cz do** 馃挰 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **艣led藕** nas na **Twitterze** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel si臋 trikami hackingowymi, przesy艂aj膮c PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytori贸w na GitHubie.
{% endhint %}