mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
118 lines
5.1 KiB
Markdown
118 lines
5.1 KiB
Markdown
# 8009 - Pentesting Apache JServ Protocol (AJP)
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
<figure><img src="../images/image (3).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Dołącz do serwera [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), 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**](https://discord.com/invite/N3FrSbmwdy) i zacznij współpracować z najlepszymi hackerami już dziś!
|
|
|
|
## Podstawowe Informacje
|
|
|
|
Z [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ół sieciowy. Jest to zoptymalizowana wersja protokołu HTTP, która pozwala samodzielnemu serwerowi internetowemu, takiemu jak [Apache](http://httpd.apache.org/), 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'](https://www.chaitin.cn/en/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](https://www.exploit-db.com/exploits/48143) 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
|
|
```bash
|
|
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
|
|
```
|
|
### [**Brute force**](../generic-hacking/brute-force.md#ajp)
|
|
|
|
## AJP Proxy
|
|
|
|
### Nginx Reverse Proxy + AJP
|
|
|
|
([Sprawdź wersję Dockerową](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version))
|
|
|
|
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.
|
|
|
|
- Rozpocznij pobieranie Nginx z [https://nginx.org/en/download.html](https://nginx.org/en/download.html) i następnie skompiluj go z modułem ajp:
|
|
```bash
|
|
# 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`.
|
|
```json
|
|
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
|
|
```bash
|
|
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.
|
|
```bash
|
|
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
|
|
|
|
- [https://github.com/yaoweibin/nginx_ajp_module](https://github.com/yaoweibin/nginx_ajp_module)
|
|
|
|
<figure><img src="../images/image (3).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Dołącz do [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy), 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**](https://discord.com/invite/N3FrSbmwdy) i zacznij współpracować z najlepszymi hackerami już dziś!
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|