8009 - Pentesting Apache JServ Protocol (AJP)
Reading time: 4 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Grundinformationen
Von https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP ist ein Protokoll auf der Leitung. Es ist eine optimierte Version des HTTP-Protokolls, um einem eigenständigen Webserver wie Apache 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 bereitstellen zu lassen, wenn möglich, aber die Anfrage für Tomcat-bezogene Inhalte an Tomcat 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/Antwort-Zyklen wiederzuverwenden.
Standardport: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Dies ist eine LFI-Schwachstelle, die es ermöglicht, einige Dateien wie WEB-INF/web.xml
abzurufen, die Anmeldeinformationen enthalten. Dies ist ein Exploit, um die Schwachstelle auszunutzen, und AJP exponierte Ports könnten dafür anfällig sein.
Die gepatchten Versionen sind 9.0.31 oder höher, 8.5.51 und 7.0.100.
Enumeration
Automatic
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
Brute force
AJP Proxy
Nginx Reverse Proxy + AJP
(Überprüfen Sie die Dockerisierte Version)
Es ist möglich, mit einem offenen AJP-Proxy-Port (8009 TCP) zu kommunizieren, indem das Nginx ajp_module
Apache-Modul verwendet wird, und auf den Tomcat-Manager von diesem Port aus zuzugreifen, was letztendlich zu RCE auf dem anfälligen Server führen könnte.
- Laden Sie Nginx von https://nginx.org/en/download.html herunter und kompilieren Sie es dann mit dem AJP-Modul:
# Compile Nginx with the ajp module
git clone https://github.com/dvershinin/nginx_ajp_module.git
cd nginx-version
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
server
-Block und fügen Sie Folgendes imhttp
-Block in/etc/nginx/conf/nginx.conf
hinzu.
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
- Schließlich starten Sie nginx (
sudo nginx
) und überprüfen Sie, ob es funktioniert, indem Siehttp://127.0.0.1
aufrufen.
Nginx Dockerisierte-Version
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 dann das Projekt und führen Sie es aus.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Apache AJP Proxy
Es ist auch möglich, einen Apache AJP-Proxy zu verwenden, um auf diesen Port anstelle von Nginx zuzugreifen.
References
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.