8009 - Pentesting Apache JServ Protocol (AJP)
Reading time: 4 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
From https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP is 'n draadprotokol. Dit is 'n geoptimaliseerde weergawe van die HTTP-protokol om 'n standalone webbediener soos Apache in staat te stel om met Tomcat te kommunikeer. Histories was Apache baie vinniger as Tomcat om statiese inhoud te bedien. Die idee is om Apache statiese inhoud te laat bedien wanneer moontlik, maar om die versoek na Tomcat te proxy vir Tomcat-verwante inhoud.
Ook interessant:
Die ajp13-protokol is pakket-georiënteerd. 'n Binaire formaat is vermoedelik gekies bo die meer leesbare gewone teks om redes van prestasie. Die webbediener kommunikeer met die servlet-container oor TCP-verbindinge. Om die duur proses van sokket-skepping te verminder, sal die webbediener probeer om volhoubare TCP-verbindinge met die servlet-container te handhaaf, en om 'n verbinding vir meerdere versoek/antwoord siklusse te hergebruik.
Standaard poort: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Dit is 'n LFI kwesbaarheid wat dit moontlik maak om sekere lêers soos WEB-INF/web.xml
te verkry wat akrediteerdata bevat. Dit is 'n exploit om die kwesbaarheid te misbruik en AJP blootgestelde poorte mag kwesbaar wees daarvoor.
Die gepatchte weergawes is op of bo 9.0.31, 8.5.51, en 7.0.100.
Enumerasie
Outomaties
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
Brute force
AJP Proxy
Nginx Reverse Proxy + AJP
(Kyk na die Dockerized weergawe)
Dit is moontlik om te kommunikeer met 'n oop AJP proxy poort (8009 TCP) deur die Nginx ajp_module
apache module te gebruik en toegang te verkry tot die Tomcat Bestuurder vanaf hierdie poort, wat uiteindelik kan lei tot RCE in die kwesbare bediener.
- Begin om Nginx af te laai van https://nginx.org/en/download.html en compileer dit dan met die ajp module:
# 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
- Kommentaar dan die
server
blok en voeg die volgende in diehttp
blok in/etc/nginx/conf/nginx.conf
by.
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
- Laastens, begin nginx (
sudo nginx
) en kontroleer of dit werk deur toegang te verkry tothttp://127.0.0.1
Nginx Dockerized-weergawe
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
Vervang TARGET-IP
in nginx.conf
met AJP IP en bou en voer dan uit.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Apache AJP Proxy
Dit is ook moontlik om 'n Apache AJP proxy te gebruik om toegang tot daardie poort te verkry in plaas van Nginx.
References
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.