8009 - Pentesting Apache JServ Protocol (AJP)
Reading time: 4 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
From https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP je protokol na žici. To je optimizovana verzija HTTP protokola koja omogućava samostalnom web serveru kao što je Apache da komunicira sa Tomcat-om. Istorijski gledano, Apache je bio mnogo brži od Tomcat-a u pružanju statičkog sadržaja. Ideja je da se Apache koristi za pružanje statičkog sadržaja kada je to moguće, ali da se zahtev prosledi Tomcat-u za sadržaj vezan za Tomcat.
Takođe zanimljivo:
AJP13 protokol je orijentisan na pakete. Binarni format je verovatno izabran umesto čitljivijeg običnog teksta iz razloga performansi. Web server komunicira sa servlet kontejnerom preko TCP veza. Da bi se smanjio skupi proces kreiranja soketa, web server će pokušati da održi trajne TCP veze sa servlet kontejnerom i da ponovo koristi vezu za više ciklusa zahtev/odgovor.
Podrazumevani port: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Ovo je LFI ranjivost koja omogućava pristup nekim datotekama kao što je WEB-INF/web.xml
koja sadrži akreditive. Ovo je eksploit za zloupotrebu ranjivosti, a AJP izloženi portovi mogu biti ranjivi na to.
Zakrpene verzije su 9.0.31 ili novije, 8.5.51 ili novije, i 7.0.100 ili novije.
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
(Pogledajte Dockerizovanu verziju)
Moguće je komunicirati sa otvorenim AJP proxy portom (8009 TCP) koristeći Nginx ajp_module
apache modul i pristupiti Tomcat Manageru sa ovog porta, što bi na kraju moglo dovesti do RCE na ranjivom serveru.
- Počnite sa preuzimanjem Nginx-a sa https://nginx.org/en/download.html i zatim ga kompajlirajte sa ajp modulom:
# 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
- Zatim, komentarišite
server
blok i dodajte sledeće uhttp
blok u/etc/nginx/conf/nginx.conf
.
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
- Na kraju, pokrenite nginx (
sudo nginx
) i proverite da li radi pristupanjemhttp://127.0.0.1
Nginx Dockerizovana verzija
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
Zamenite TARGET-IP
u nginx.conf
sa AJP IP, a zatim izgradite i pokrenite.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Apache AJP Proxy
Takođe je moguće koristiti Apache AJP proxy za pristup toj portu umesto Nginx.
References
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.