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

203 lines
9.7 KiB
Markdown
Raw Normal View History

2024-02-10 13:11:20 +00:00
# 8009 - Pentestiranje Apache JServ protokola (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
2024-02-10 13:11:20 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* 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>
2023-12-04 15:45:05 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).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
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
**Hakerske vesti u realnom vremenu**\
Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu
2023-07-14 15:03:41 +00:00
2024-02-10 13:11:20 +00:00
**Najnovije objave**\
Budite informisani o najnovijim pokretanjima nagrada za pronalaženje bagova i važnim ažuriranjima platforme
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
2024-02-10 13:11:20 +00:00
## Osnovne informacije
2024-02-10 13:11:20 +00:00
Izvor: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
2024-02-10 13:11:20 +00:00
> AJP je žičani protokol. To je optimizovana verzija HTTP protokola koja omogućava samostalnom veb serveru kao što je [Apache](http://httpd.apache.org/) da komunicira sa Tomcat-om. Istoriski gledano, Apache je bio mnogo brži od Tomcat-a u služenju statičkog sadržaja. Ideja je da se Apache koristi za služenje statičkog sadržaja kada je to moguće, ali da se za Tomcat-ov sadržaj koristi proxy zahtev.
2024-02-10 13:11:20 +00:00
Takođe interesantno:
2024-02-10 13:11:20 +00:00
> Protokol ajp13 je orijentisan prema paketima. Binarni format je verovatno izabran umesto čitljivijeg običnog teksta iz razloga performansi. Veb server komunicira sa servlet kontejnerom preko TCP konekcija. Da bi se smanjio skup proces kreiranja soketa, veb server će pokušati da održava trajne TCP konekcije sa servlet kontejnerom i da koristi istu konekciju za više ciklusa 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)
2024-02-10 13:11:20 +00:00
Ako je AJP port izložen, Tomcat može biti podložan Ghostcat ranjivosti. Ovde je [exploit](https://www.exploit-db.com/exploits/48143) koji radi sa ovim problemom.
2024-02-10 13:11:20 +00:00
Ghostcat je LFI ranjivost, ali nešto ograničena: samo se mogu izvući fajlovi sa određene putanje. Ipak, to može uključivati fajlove poput `WEB-INF/web.xml` koji mogu otkriti važne informacije poput akreditacija za Tomcat interfejs, u zavisnosti od podešavanja servera.
2024-02-10 13:11:20 +00:00
Popravljene verzije 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
2024-02-10 13:11:20 +00:00
[Proverite Docker verziju](#Dockerized-version)
2022-10-03 13:43:01 +00:00
2024-02-10 13:11:20 +00:00
Kada naiđemo na otvoren AJP proxy port (8009 TCP), možemo koristiti Nginx sa `ajp_module` da pristupimo "skrivenom" Tomcat Manager-u. To se može postići 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`.
* Kreirajte konfiguracioni fajl koji pokazuje na AJP Port
```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
```
2024-02-10 13:11:20 +00:00
Komentarišite ceo `server` blok i dodajte sledeće linije unutar `http` bloka u `/etc/nginx/conf/nginx.conf` fajlu.
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
}
```
2024-02-10 13:11:20 +00:00
Pokrenite Nginx i proverite da li sve radi ispravno izdavanjem cURL zahteva ka 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
2024-02-10 13:11:20 +00:00
Nailazak otvorenog porta 8009 bez drugih dostupnih web portova je retka pojava. Međutim, i dalje je moguće iskoristiti ga pomoću **Metasploita**. Korišćenjem **Apachea** kao proksija, 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
```
2024-02-10 13:11:20 +00:00
Ova konfiguracija pruža mogućnost zaobilaženja sistema za detekciju i prevenciju upada (IDS/IPS) zbog binarne prirode **AJP protokola**, iako ova sposobnost nije potvrđena. Usmeravanjem redovnog Metasploit Tomcat napada na `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
2024-02-08 21:36:35 +00:00
* [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
2023-12-04 15:45:05 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).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 brzim svetom hakovanja kroz vesti i uvide u realnom vremenu.
2023-02-27 09:28:45 +00:00
2024-02-10 13:11:20 +00:00
**Najnovije obaveštenja**\
Budite informisani o najnovijim pokretanjima nagrada 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
2024-02-10 13:11:20 +00:00
* Ako želite da vidite **oglašavanje vaše kompanije u HackTricks-u** ili **preuzmete HackTricks u PDF formatu**, proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* 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 trikove hakovanja 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>