# 8009 - Testowanie penetracyjne protokołu Apache JServ (AJP)
Zacznij od zera i stań się ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
Dołącz do serwera [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), aby komunikować się z doświadczonymi hakerami i łowcami błędów! **Wgląd w Hakerstwo**\ Zapoznaj się z treściami, które zagłębiają się w emocje i wyzwania hakerstwa **Aktualności z Hakerstwa na Żywo**\ Bądź na bieżąco z szybkim tempem świata hakerstwa dzięki aktualnościom i wglądom na żywo **Najnowsze Ogłoszenia**\ Bądź na bieżąco z najnowszymi programami bug bounty i istotnymi aktualizacjami platform **Dołącz do nas na** [**Discordzie**](https://discord.com/invite/N3FrSbmwdy) i zacznij współpracować z najlepszymi hakerami już dziś! ## Podstawowe informacje Źródło: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/) > AJP to protokół przewodowy. Jest to zoptymalizowana wersja protokołu HTTP, która umożliwia samodzielny serwer WWW, takie jak [Apache](http://httpd.apache.org/), komunikować się z Tomcatem. Historycznie rzecz biorąc, Apache był znacznie szybszy niż Tomcat w obsłudze treści statycznych. Pomysł polega na tym, aby pozwolić Apache serwować treści statyczne, gdy to możliwe, ale przekierować żądanie do Tomcata w przypadku treści związanych z Tomcatem. Również interesujące: > Protokół ajp13 jest zorientowany pakietowo. Format binarny został prawdopodobnie wybrany zamiast bardziej czytelnego tekstu z powodów wydajnościowych. Serwer WWW komunikuje się z kontenerem serwletów poprzez połączenia TCP. Aby ograniczyć koszty związane z tworzeniem gniazd, serwer WWW będzie próbował utrzymywać trwałe połączenia TCP z kontenerem serwletów i ponownie używać połączenia dla wielu cykli żądania/odpowiedzi. **Domyślny port:** 8009 ``` PORT STATE SERVICE 8009/tcp open ajp13 ``` ## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat) Jeśli port AJP jest wystawiony, Tomcat może być podatny na lukę Ghostcat. Oto [exploit](https://www.exploit-db.com/exploits/48143), który działa w przypadku tego problemu. Ghostcat to podatność LFI, ale w pewnym stopniu ograniczona: tylko pliki z określonej ścieżki mogą być pobrane. Mimo to może to obejmować pliki takie jak `WEB-INF/web.xml`, które mogą ujawnić ważne informacje, takie jak dane uwierzytelniające do interfejsu Tomcat, w zależności od konfiguracji serwera. Zaktualizowane wersje równe lub wyższe niż 9.0.31, 8.5.51 i 7.0.100 naprawiły ten problem. ## Wyliczanie ### Automatyczne ```bash nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 ``` ### [**Atak brutalny**](../generic-methodologies-and-resources/brute-force.md#ajp) ## Proxy AJP ### Odwrócony proxy Nginx & AJP [Sprawdź wersję w Dockerze](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version) Gdy napotkamy otwarty port proxy AJP (8009 TCP), możemy użyć Nginx z modułem `ajp_module`, aby uzyskać dostęp do "ukrytego" Menedżera Tomcat. Możemy to zrobić, kompilując kod źródłowy Nginx i dodając wymagany moduł, zgodnie z poniższymi krokami: * Pobierz kod źródłowy Nginx * Pobierz wymagany moduł * Skompiluj kod źródłowy Nginx z `ajp_module`. * Utwórz plik konfiguracyjny wskazujący na port AJP ```bash # 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 ``` ```diff -# server { -# listen 80; -# server_name example.com; -# location / { -# root /var/www/html; -# index index.html; -# } -# } +# server { +# listen 80; +# server_name example.com; +# location / { +# root /var/www/html; +# index index.html; +# } +# } ``` ```shell-session upstream tomcats { server :8009; keepalive 10; } server { listen 80; location / { ajp_keep_conn on; ajp_pass tomcats; } } ``` Uruchom Nginx i sprawdź, czy wszystko działa poprawnie, wysyłając żądanie cURL do lokalnego hosta. ```html sudo nginx curl http://127.0.0.1:80 Apache Tomcat/X.X.XX

Apache Tomcat/X.X.XX

If you're seeing this, you've successfully installed Tomcat. Congratulations!

``` ### Wersja z Dockerem Nginx ```bash git clone https://github.com/ScribblerCoder/nginx-ajp-docker cd nginx-ajp-docker ``` Zamień `TARGET-IP` w pliku `nginx.conf` na adres IP AJP, następnie zbuduj i uruchom. ```bash docker build . -t nginx-ajp-proxy docker run -it --rm -p 80:80 nginx-ajp-proxy ``` ### Apache AJP Proxy Natrafienie na otwarty port 8009 bez innych dostępnych portów sieciowych jest rzadkie. Niemniej jednak, nadal istnieje możliwość jego wykorzystania za pomocą **Metasploita**. Korzystając z **Apache** jako proxy, żądania mogą być przekierowane do **Tomcata** na porcie 8009. ```bash 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 Order deny,allow Deny from all Allow from localhost ProxyPass / ajp://HOST:8009/ ProxyPassReverse / ajp://HOST:8009/ sudo a2enmod proxy_http sudo a2enmod proxy_ajp sudo systemctl restart apache2 ``` To ustawienie oferuje potencjał do ominięcia systemów wykrywania i zapobiegania intruzom (IDS/IPS) ze względu na **binarną naturę protokołu AJP**, chociaż ta zdolność nie została jeszcze zweryfikowana. Przekierowując zwykłe narzędzie eksploitujące Metasploit Tomcat na `127.0.0.1:80`, można efektywnie przejąć kontrolę nad docelowym systemem. ```bash msf exploit(tomcat_mgr_deploy) > show options ``` ## Odnośniki * [https://github.com/yaoweibin/nginx\_ajp\_module](https://github.com/yaoweibin/nginx\_ajp\_module) * [https://academy.hackthebox.com/module/145/section/1295](https://academy.hackthebox.com/module/145/section/1295)
Dołącz do serwera [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), aby komunikować się z doświadczonymi hakerami i łowcami luk za nagrody! **Wgląd w Hacking**\ Zanurz się w treści, które zgłębiają emocje i wyzwania związane z hakerstwem **Aktualności z Hackingu na Żywo**\ Bądź na bieżąco z szybkim tempem świata hakerstwa dzięki aktualnościom i wglądom na żywo **Najnowsze Ogłoszenia**\ Bądź na bieżąco z najnowszymi programami nagród za znalezienie luk i istotnymi aktualizacjami platform **Dołącz do nas na** [**Discordzie**](https://discord.com/invite/N3FrSbmwdy) i zacznij współpracować z najlepszymi hakerami już dziś!
Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.