# 8009 - Pentesting Apache JServ Protocol (AJP)
Erlernen Sie AWS-Hacking von Grund auf mithtARTE (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
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 mithtARTE (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.