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

217 lines
10 KiB
Markdown
Raw Normal View History

# 8009 - Pentesting Apache JServ Protocol (AJP)
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-03 10:42:55 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2024-02-10 13:11:20 +00:00
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (377).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
2024-02-10 13:11:20 +00:00
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
2023-02-27 09:28:45 +00:00
**Hakerski Uvidi**\
2024-02-10 13:11:20 +00:00
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
2023-02-27 09:28:45 +00:00
**Vesti o Hakovanju u Realnom Vremenu**\
2024-02-10 13:11:20 +00:00
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
2023-07-14 15:03:41 +00:00
**Najnovije Najave**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platformi
2023-07-14 15:03:41 +00:00
2024-02-10 13:11:20 +00:00
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
2022-11-05 09:07:43 +00:00
## Osnovne Informacije
Od: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
> AJP je žičani protokol. To je optimizovana verzija HTTP protokola koja omogućava samostalnom veb serveru poput [Apache](http://httpd.apache.org/) da komunicira sa Tomcat-om. Istoriski, Apache je bio mnogo brži od Tomcat-a u pružanju statičkog sadržaja. Ideja je da se dozvoli Apachu da služi statički sadržaj kada je to moguće, ali da prosledi zahtev Tomcat-u za Tomcat-ov sadržaj.
2024-02-10 13:11:20 +00:00
Takođe interesantno:
> Protokol ajp13 je orijentisan prema paketima. Binarni format je verovatno izabran umesto čitljivijeg plain text-a iz razloga performansi. Veb server komunicira sa servlet kontejnerom preko TCP veza. Da bi smanjio troškove procesa kreiranja soketa, veb server će pokušati da održava perzistentne TCP veze sa servlet kontejnerom, i da ponovo koristi vezu za višestruke cikluse zahteva/odgovora
2024-02-10 13:11:20 +00:00
**Podrazumevani port:** 8009
2022-05-01 13:25:53 +00:00
```
PORT STATE SERVICE
8009/tcp open ajp13
```
2022-05-01 13:25:53 +00:00
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
Ako je AJP port izložen, Tomcat može biti podložan Ghostcat ranjivosti. Evo [exploita](https://www.exploit-db.com/exploits/48143) koji radi sa ovim problemom.
Ghostcat je LFI ranjivost, ali je donekle ograničena: samo fajlovi sa određenog puta mogu biti povučeni. Ipak, ovo može uključivati fajlove poput `WEB-INF/web.xml` koji mogu otkriti važne informacije poput akreditiva za Tomcat interfejs, zavisno od postavki servera.
Popravljene verzije na ili iznad 9.0.31, 8.5.51 i 7.0.100 su rešile ovaj problem.
2024-02-10 13:11:20 +00:00
## Enumeracija
2024-02-10 13:11:20 +00:00
### Automatska
2022-10-03 13:43:01 +00:00
```bash
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
2022-05-01 13:25:53 +00:00
```
2022-10-03 13:43:01 +00:00
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#ajp)
## AJP Proxy
### Nginx Reverse Proxy & AJP
[Pogledajte Dockerizovanu verziju](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version)
2022-10-03 13:43:01 +00:00
Kada naiđemo na otvoren AJP proxy port (8009 TCP), možemo koristiti Nginx sa `ajp_module`-om da pristupimo "skrivenom" Tomcat Manager-u. To se može uraditi kompajliranjem izvornog koda Nginx-a i dodavanjem potrebnog modula, na sledeći način:
2024-02-10 13:11:20 +00:00
* Preuzmite izvorni kod Nginx-a
* Preuzmite potrebni modul
* Kompajlirajte izvorni kod Nginx-a sa `ajp_module`-om.
* Kreirajte konfiguracioni fajl koji pokazuje ka AJP portu
```bash
2022-10-03 13:43:01 +00:00
# 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 default_server;
- server_name _;
- return 444;
- }
+ location / {
+ proxy_pass http://localhost:8080;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ }
```
2022-10-03 13:43:01 +00:00
```shell-session
upstream tomcats {
2024-02-10 13:11:20 +00:00
server <TARGET_SERVER>:8009;
keepalive 10;
}
2022-10-03 13:43:01 +00:00
server {
2024-02-10 13:11:20 +00:00
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
2022-10-03 13:43:01 +00:00
}
```
Pokrenite Nginx i proverite da li sve radi ispravno izdavanjem cURL zahteva ka vašem lokalnom hostu.
2022-10-03 13:43:01 +00:00
```html
sudo nginx
curl http://127.0.0.1:80
<!DOCTYPE html>
<html lang="en">
2024-02-10 13:11:20 +00:00
<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>
2022-10-03 13:43:01 +00:00
<SNIP>
```
2024-02-10 13:11:20 +00:00
### Nginx Dockerizovana verzija
```bash
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
```
2024-02-10 13:11:20 +00:00
Zamenite `TARGET-IP` u `nginx.conf` sa AJP IP adresom, zatim izgradite i pokrenite.
```bash
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
```
2024-02-08 21:36:35 +00:00
### Apache AJP Proxy
Nailazak otvoren port 8009 bez drugih dostupnih web portova je retko. Ipak, još uvek je moguće iskoristiti ga koristeći **Metasploit**. Korišćenjem **Apache**-a kao proksi, zahtevi mogu biti preusmereni na **Tomcat** na portu 8009.
2024-02-08 21:36:35 +00:00
```bash
sudo apt-get install libapache2-mod-jk
sudo vim /etc/apache2/apache2.conf # append the following line to the config
2024-02-10 13:11:20 +00:00
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/
2024-02-08 21:36:35 +00:00
sudo a2enmod proxy_http
sudo a2enmod proxy_ajp
sudo systemctl restart apache2
```
Ova postavka pruža potencijal za zaobilaženje sistema za detekciju i prevenciju upada (IDS/IPS) zbog **binarne prirode AJP protokola**, iako ova mogućnost nije potvrđena. Usmeravanjem redovnog Metasploit Tomcat exploit-a ka `127.0.0.1:80`, možete efikasno preuzeti kontrolu nad ciljanim sistemom.
2024-02-08 21:36:35 +00:00
```bash
msf exploit(tomcat_mgr_deploy) > show options
```
2024-02-10 13:11:20 +00:00
## Reference
* [https://github.com/yaoweibin/nginx\_ajp\_module](https://github.com/yaoweibin/nginx\_ajp\_module)
2022-10-03 13:43:01 +00:00
* [https://academy.hackthebox.com/module/145/section/1295](https://academy.hackthebox.com/module/145/section/1295)
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (377).png" alt=""><figcaption></figcaption></figure>
2023-07-14 15:03:41 +00:00
2024-02-10 13:11:20 +00:00
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove!
2022-11-05 09:07:43 +00:00
2024-02-10 13:11:20 +00:00
**Hakerski uvidi**\
Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja
2023-02-27 09:28:45 +00:00
2024-02-10 13:11:20 +00:00
**Vesti o hakovanju u realnom vremenu**\
Budite u toku sa dinamičnim svetom hakovanja kroz vesti i uvide u realnom vremenu
2023-02-27 09:28:45 +00:00
**Poslednje najave**\
Budite informisani o najnovijim nagradama za pronalaženje bagova i važnim ažuriranjima platforme
2023-02-27 09:28:45 +00:00
2024-02-10 13:11:20 +00:00
**Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas!
2022-11-05 09:07:43 +00:00
2022-10-03 13:43:01 +00:00
<details>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-03 10:42:55 +00:00
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>