# 8009 - Pentesting Apache JServ Protocol (AJP)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Lernen & üben Sie GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
{% endhint %}
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**\
Engagieren Sie sich mit Inhalten, die in den Nervenkitzel und die Herausforderungen des Hackens eintauchen
**Echtzeit-Hack-Nachrichten**\
Bleiben Sie auf dem Laufenden über die schnelllebige Hacking-Welt durch Echtzeitnachrichten und Einblicke
**Neueste Ankündigungen**\
Bleiben Sie informiert über die neuesten Bug-Bounties und wichtige Plattform-Updates
**Treten Sie uns auf** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit den besten Hackern zusammenzuarbeiten!
## Grundinformationen
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 ist eine optimierte Version des HTTP-Protokolls, um einem eigenständigen Webserver wie [Apache](http://httpd.apache.org/) die Kommunikation mit Tomcat zu ermöglichen. Historisch gesehen war Apache beim Bereitstellen von statischen Inhalten viel schneller als Tomcat. Die Idee ist, Apache die statischen Inhalte, wenn möglich, bereitstellen zu lassen, aber die Anfrage an Tomcat für Tomcat-bezogene Inhalte weiterzuleiten.
Auch interessant:
> Das ajp13-Protokoll ist paketorientiert. Ein binäres Format wurde vermutlich aus Leistungsgründen gegenüber dem lesbareren Klartext gewählt. Der Webserver kommuniziert über TCP-Verbindungen mit dem Servlet-Container. Um den kostspieligen 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 exponiert ist, könnte Tomcat anfällig für die Ghostcat-Sicherheitsanfälligkeit sein. Hier ist ein [Exploit](https://www.exploit-db.com/exploits/48143), der mit diesem Problem funktioniert.
Ghostcat ist eine LFI-Sicherheitsanfälligkeit, aber etwas eingeschränkt: Nur Dateien aus einem bestimmten Pfad können abgerufen werden. Dennoch kann dies Dateien wie `WEB-INF/web.xml` umfassen, die wichtige Informationen wie Anmeldeinformationen für die Tomcat-Oberfläche preisgeben können, abhängig von der Serverkonfiguration.
Patches für Versionen ab 9.0.31, 8.5.51 und 7.0.100 haben dieses Problem behoben.
## 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
[Ü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 der Nginx-Quellcode kompiliert und das erforderliche Modul hinzugefügt wird, wie folgt:
* Laden Sie den Nginx-Quellcode herunter
* Laden Sie das erforderliche Modul herunter
* Kompilieren Sie den Nginx-Quellcode mit dem `ajp_module`.
* Erstellen Sie eine Konfigurationsdatei, die auf den AJP-Port verweist
```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
```
Kommentieren Sie den gesamten `server`-Block aus und fügen Sie die folgenden Zeilen innerhalb des `http`-Blocks in `/etc/nginx/conf/nginx.conf` hinzu.
```shell-session
upstream tomcats {
server :8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
```
Starten Sie Nginx und überprüfen Sie, ob alles korrekt funktioniert, indem Sie eine cURL-Anfrage an Ihren lokalen Host senden.
```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 und bauen Sie es dann und führen Sie es aus.
```bash
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
```
### Apache AJP Proxy
Es ist selten, einen offenen Port 8009 ohne andere zugängliche Webports zu finden. Es ist jedoch immer noch möglich, ihn mit **Metasploit** auszunutzen. Durch die Nutzung von **Apache** als Proxy können Anfragen an **Tomcat** auf Port 8009 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
```
Dieses Setup bietet das Potenzial, Intrusion Detection und Prevention Systeme (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 an `127.0.0.1:80` richten, können Sie effektiv die Kontrolle über das angevisierte System ü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)
Tritt dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
**Hacking Einblicke**\
Engagiere dich mit Inhalten, die in den Nervenkitzel und die Herausforderungen des Hackens eintauchen
**Echtzeit Hack Nachrichten**\
Bleibe auf dem Laufenden über die schnelllebige Hackerwelt durch Echtzeitnachrichten und Einblicke
**Neueste Ankündigungen**\
Bleibe informiert über die neuesten Bug-Bounties und wichtige Plattform-Updates
**Tritt uns bei** [**Discord**](https://discord.com/invite/N3FrSbmwdy) und beginne noch heute mit den besten Hackern zusammenzuarbeiten!
{% hint style="success" %}
Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Unterstütze HackTricks
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
{% endhint %}