# 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

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 %}