8009 - Pentesting Apache JServ Protocol (AJP)
Reading time: 4 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Podstawowe informacje
Z https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP to protokół sieciowy. Jest to zoptymalizowana wersja protokołu HTTP, która pozwala na komunikację samodzielnego serwera WWW, takiego jak Apache, z Tomcatem. Historycznie, Apache był znacznie szybszy niż Tomcat w serwowaniu statycznej zawartości. Idea polega na tym, aby pozwolić Apache na serwowanie statycznej zawartości, gdy to możliwe, ale przekazywać żądanie do Tomcata w przypadku zawartości związanej z Tomcatem.
Również interesujące:
Protokół ajp13 jest zorientowany na pakiety. Format binarny został prawdopodobnie wybrany zamiast bardziej czytelnego tekstu zwykłego z powodów wydajnościowych. Serwer WWW komunikuje się z kontenerem servletów za pośrednictwem połączeń TCP. Aby zredukować kosztowny proces tworzenia gniazd, serwer WWW będzie starał się utrzymywać trwałe połączenia TCP z kontenerem servletów i ponownie wykorzystywać połączenie dla wielu cykli żądanie/odpowiedź.
Domyślny port: 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Jest to luka LFI, która pozwala na uzyskanie niektórych plików, takich jak WEB-INF/web.xml
, które zawierają dane uwierzytelniające. To jest eksploit do wykorzystania tej luki, a porty AJP mogą być na nią narażone.
Poprawione wersje to 9.0.31, 8.5.51 i 7.0.100.
Enumeracja
Automatyczna
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
Brute force
AJP Proxy
Nginx Reverse Proxy + AJP
Możliwe jest komunikowanie się z otwartym portem proxy AJP (8009 TCP) za pomocą modułu ajp_module
Nginx i uzyskanie dostępu do Menedżera Tomat z tego portu, co ostatecznie może prowadzić do RCE na podatnym serwerze.
- Rozpocznij pobieranie Nginx z https://nginx.org/en/download.html i następnie skompiluj go z modułem ajp:
# 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
- Następnie skomentuj blok
server
i dodaj następujące do blokuhttp
w/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 koniec uruchom nginx (
sudo nginx
) i sprawdź, czy działa, uzyskując dostęp dohttp://127.0.0.1
Wersja Dockerowa Nginx
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
Zamień TARGET-IP
w nginx.conf
na IP AJP, a następnie zbuduj i uruchom.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Apache AJP Proxy
Możliwe jest również użycie proxy Apache AJP do uzyskania dostępu do tego portu zamiast Nginx.
References
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.