hacktricks/src/network-services-pentesting/8009-pentesting-apache-jserv-protocol-ajp.md

5.1 KiB

8009 - Pentesting Apache JServ Protocol (AJP)

{{#include ../banners/hacktricks-training.md}}

Dołącz do serwera HackenProof Discord, aby komunikować się z doświadczonymi hackerami i łowcami bugów!

Wgląd w Hacking
Zaangażuj się w treści, które zagłębiają się w emocje i wyzwania związane z hackingiem

Aktualności Hackingowe w Czasie Rzeczywistym
Bądź na bieżąco z dynamicznym światem hackingu dzięki aktualnym wiadomościom i wglądom

Najnowsze Ogłoszenia
Bądź informowany o najnowszych programach bug bounty oraz istotnych aktualizacjach platformy

Dołącz do nas na Discord i zacznij współpracować z najlepszymi hackerami już dziś!

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 samodzielnemu serwerowi internetowemu, takiemu jak Apache, komunikować się z Tomcat. Historycznie, Apache był znacznie szybszy niż Tomcat w serwowaniu statycznych treści. Idea polega na tym, aby pozwolić Apache na serwowanie statycznych treści, gdy to możliwe, ale proxy'ować żądanie do Tomcat w przypadku treści związanych z Tomcat.

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 internetowy komunikuje się z kontenerem servletów za pośrednictwem połączeń TCP. Aby zredukować kosztowny proces tworzenia gniazd, serwer internetowy będzie starał się utrzymać trwałe połączenia TCP z kontenerem servletów i ponownie wykorzystywać połączenie do 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

(Sprawdź wersję Dockerową)

Możliwe jest komunikowanie się z otwartym portem proxy AJP (8009 TCP) za pomocą modułu ajp_module Nginx i uzyskanie dostępu do Tomcat Managera z tego portu, co ostatecznie może prowadzić do RCE na podatnym serwerze.

# 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 w bloku http 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 do http://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 AJP IP, 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 Apache AJP proxy do uzyskania dostępu do tego portu zamiast Nginx.

References

Dołącz do HackenProof Discord, aby komunikować się z doświadczonymi hackerami i łowcami bugów!

Hacking Insights
Zaangażuj się w treści, które zagłębiają się w emocje i wyzwania związane z hackingiem

Real-Time Hack News
Bądź na bieżąco z dynamicznym światem hackingu dzięki wiadomościom i spostrzeżeniom w czasie rzeczywistym

Latest Announcements
Bądź na bieżąco z najnowszymi nagrodami za błędy oraz istotnymi aktualizacjami platformy

Dołącz do nas na Discord i zacznij współpracować z najlepszymi hackerami już dziś!

{{#include ../banners/hacktricks-training.md}}