mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 21:24:06 +00:00
220 lines
10 KiB
Markdown
220 lines
10 KiB
Markdown
# 8009 - Testowanie penetracyjne protokołu Apache JServ (AJP)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Zacznij od zera i stań się ekspertem od hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
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.
|
|
|
|
</details>
|
|
|
|
<figure><img src="../.gitbook/assets/image (377).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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 <IP>
|
|
```
|
|
### [**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 <TARGET_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
|
|
|
|
<!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>
|
|
```
|
|
### 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
|
|
<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
|
|
```
|
|
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)
|
|
|
|
<figure><img src="../.gitbook/assets/image (377).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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ś!
|
|
|
|
<details>
|
|
|
|
<summary><strong>Dowiedz się, jak hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
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.
|
|
|
|
</details>
|