# 8009 - Pentesting Apache JServ Protocol (AJP)
Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)! Andere Möglichkeiten, HackTricks zu unterstützen: * Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)! * Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com) * Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family) * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github Repositories einreichen.
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren! **Hacking-Einblicke**\ Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen **Echtzeit-Hack-News**\ Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden **Neueste Ankündigungen**\ Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattformupdates informiert **Treten Sie uns auf** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit der Zusammenarbeit mit Top-Hackern! ## Grundlegende Informationen Von: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/) > AJP ist ein Drahtprotokoll. Es handelt sich um eine optimierte Version des HTTP-Protokolls, die einem eigenständigen Webserver wie [Apache](http://httpd.apache.org/) ermöglicht, mit Tomcat zu kommunizieren. Historisch gesehen war Apache beim Bereitstellen von statischem Inhalt viel schneller als Tomcat. Die Idee ist, Apache den statischen Inhalt bereitstellen zu lassen, wenn möglich, aber die Anfrage an Tomcat für tomcatbezogenen Inhalt weiterzuleiten. Auch interessant: > Das ajp13-Protokoll ist paketorientiert. Ein binäres Format wurde vermutlich aus Leistungsgründen anstelle des lesbareren Klartexts gewählt. Der Webserver kommuniziert über TCP-Verbindungen mit dem Servlet-Container. Um den teuren Prozess der Socket-Erstellung zu reduzieren, wird der Webserver versuchen, persistente TCP-Verbindungen zum Servlet-Container aufrechtzuerhalten und eine Verbindung für mehrere Anfrage-/Antwortzyklen wiederzuverwenden. **Standardport:** 8009 ``` PORT STATE SERVICE 8009/tcp open ajp13 ``` ## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat) Wenn der AJP-Port freigelegt ist, könnte Tomcat anfällig für die Ghostcat-Schwachstelle sein. Hier ist ein [Exploit](https://www.exploit-db.com/exploits/48143), der mit diesem Problem funktioniert. Ghostcat ist eine LFI-Schwachstelle, jedoch etwas eingeschränkt: Es können nur Dateien aus einem bestimmten Pfad abgerufen werden. Dennoch können darunter Dateien wie `WEB-INF/web.xml` fallen, die wichtige Informationen wie Anmeldeinformationen für die Tomcat-Schnittstelle preisgeben können, abhängig von der Serverkonfiguration. Behobene Versionen ab 9.0.31, 8.5.51 und 7.0.100 haben dieses Problem behoben. ## Enumeration ### Automatisch ```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 [Überprüfen Sie die Dockerisierte Version](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version) Wenn wir auf einen offenen AJP-Proxy-Port (8009 TCP) stoßen, können wir Nginx mit dem `ajp_module` verwenden, um auf den "versteckten" Tomcat-Manager zuzugreifen. Dies kann erreicht werden, indem man den Nginx-Quellcode herunterlädt und das erforderliche Modul hinzufügt, wie folgt: * Den Nginx-Quellcode herunterladen * Das erforderliche Modul herunterladen * Den Nginx-Quellcode mit dem `ajp_module` kompilieren. * Eine Konfigurationsdatei erstellen, die auf den AJP-Port zeigt ```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 ``` ```diff -# server { -# listen 80; -# server_name example.com; -# location / { -# root /var/www/html; -# index index.html; -# } -# } + location /secret { + root /var/www/hidden; + index confidential.html; + } ``` ```shell-session upstream tomcats { server :8009; keepalive 10; } server { listen 80; location / { ajp_keep_conn on; ajp_pass tomcats; } } ``` Starte Nginx und überprüfe, ob alles korrekt funktioniert, indem du eine cURL-Anfrage an deinen lokalen Host sendest. ```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 Dockerisierte Version ```bash git clone https://github.com/ScribblerCoder/nginx-ajp-docker cd nginx-ajp-docker ``` Ersetzen Sie `TARGET-IP` in `nginx.conf` durch die AJP-IP, dann bauen und ausführen. ```bash docker build . -t nginx-ajp-proxy docker run -it --rm -p 80:80 nginx-ajp-proxy ``` ### Apache AJP-Proxy Das Auftreten eines offenen Ports 8009 ohne andere zugängliche Web-Ports ist selten. Es ist jedoch immer noch möglich, dies mit **Metasploit** auszunutzen. Durch die Nutzung von **Apache** als Proxy können Anfragen auf den Port 8009 zu **Tomcat** umgeleitet werden. ```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 ``` Diese Konfiguration bietet das Potenzial, Intrusion Detection und Prevention Systems (IDS/IPS) aufgrund der binären Natur des AJP-Protokolls zu umgehen, obwohl diese Fähigkeit nicht verifiziert wurde. Indem Sie einen regulären Metasploit Tomcat-Exploit auf `127.0.0.1:80` umleiten, können Sie effektiv die Kontrolle über das Zielssystem übernehmen. ```bash msf exploit(tomcat_mgr_deploy) > show options ``` ## Referenzen * [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)
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren! **Hacking-Einblicke**\ Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen **Echtzeit-Hack-News**\ Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden **Neueste Ankündigungen**\ Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattformupdates informiert **Treten Sie uns bei** auf [**Discord**](https://discord.com/invite/N3FrSbmwdy) und beginnen Sie noch heute mit der Zusammenarbeit mit Top-Hackern!
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)! Andere Möglichkeiten, HackTricks zu unterstützen: * Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)! * Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com) * Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family) * **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.