mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-21 02:23:30 +00:00
216 lines
10 KiB
Markdown
216 lines
10 KiB
Markdown
# 8009 - Pentesting Apache JServ Protocol (AJP)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
|
|
|
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github Repositories einreichen.
|
|
|
|
</details>
|
|
|
|
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
|
|
|
|
**Hacking-Einblicke**\
|
|
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen
|
|
|
|
**Echtzeit-Hack-News**\
|
|
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden
|
|
|
|
**Neueste Ankündigungen**\
|
|
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattformupdates informiert
|
|
|
|
**Treten Sie uns auf** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit der Zusammenarbeit mit Top-Hackern!
|
|
|
|
## Grundlegende Informationen
|
|
|
|
Von: [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
|
|
|
|
> AJP ist ein Drahtprotokoll. Es handelt sich um eine optimierte Version des HTTP-Protokolls, die einem eigenständigen Webserver wie [Apache](http://httpd.apache.org/) ermöglicht, mit Tomcat zu kommunizieren. Historisch gesehen war Apache beim Bereitstellen von statischem Inhalt viel schneller als Tomcat. Die Idee ist, Apache den statischen Inhalt bereitstellen zu lassen, wenn möglich, aber die Anfrage an Tomcat für tomcatbezogenen Inhalt weiterzuleiten.
|
|
|
|
Auch interessant:
|
|
|
|
> Das ajp13-Protokoll ist paketorientiert. Ein binäres Format wurde vermutlich aus Leistungsgründen anstelle des lesbareren Klartexts gewählt. Der Webserver kommuniziert über TCP-Verbindungen mit dem Servlet-Container. Um den teuren Prozess der Socket-Erstellung zu reduzieren, wird der Webserver versuchen, persistente TCP-Verbindungen zum Servlet-Container aufrechtzuerhalten und eine Verbindung für mehrere Anfrage-/Antwortzyklen wiederzuverwenden.
|
|
|
|
**Standardport:** 8009
|
|
```
|
|
PORT STATE SERVICE
|
|
8009/tcp open ajp13
|
|
```
|
|
## CVE-2020-1938 ['Ghostcat'](https://www.chaitin.cn/en/ghostcat)
|
|
|
|
Wenn der AJP-Port freigelegt ist, könnte Tomcat anfällig für die Ghostcat-Schwachstelle sein. Hier ist ein [Exploit](https://www.exploit-db.com/exploits/48143), der mit diesem Problem funktioniert.
|
|
|
|
Ghostcat ist eine LFI-Schwachstelle, jedoch etwas eingeschränkt: Es können nur Dateien aus einem bestimmten Pfad abgerufen werden. Dennoch können darunter Dateien wie `WEB-INF/web.xml` fallen, die wichtige Informationen wie Anmeldeinformationen für die Tomcat-Schnittstelle preisgeben können, abhängig von der Serverkonfiguration.
|
|
|
|
Behobene Versionen ab 9.0.31, 8.5.51 und 7.0.100 haben dieses Problem behoben.
|
|
|
|
## Enumeration
|
|
|
|
### Automatisch
|
|
```bash
|
|
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
|
|
```
|
|
### [**Brute Force**](../generic-methodologies-and-resources/brute-force.md#ajp)
|
|
|
|
## AJP-Proxy
|
|
|
|
### Nginx-Reverse-Proxy & AJP
|
|
|
|
[Überprüfen Sie die Dockerisierte Version](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version)
|
|
|
|
Wenn wir auf einen offenen AJP-Proxy-Port (8009 TCP) stoßen, können wir Nginx mit dem `ajp_module` verwenden, um auf den "versteckten" Tomcat-Manager zuzugreifen. Dies kann erreicht werden, indem man den Nginx-Quellcode herunterlädt und das erforderliche Modul hinzufügt, wie folgt:
|
|
|
|
* Den Nginx-Quellcode herunterladen
|
|
* Das erforderliche Modul herunterladen
|
|
* Den Nginx-Quellcode mit dem `ajp_module` kompilieren.
|
|
* Eine Konfigurationsdatei erstellen, die auf den AJP-Port zeigt
|
|
```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;
|
|
-# }
|
|
-# }
|
|
+ location /secret {
|
|
+ root /var/www/hidden;
|
|
+ index confidential.html;
|
|
+ }
|
|
```
|
|
```shell-session
|
|
upstream tomcats {
|
|
server <TARGET_SERVER>:8009;
|
|
keepalive 10;
|
|
}
|
|
server {
|
|
listen 80;
|
|
location / {
|
|
ajp_keep_conn on;
|
|
ajp_pass tomcats;
|
|
}
|
|
}
|
|
```
|
|
Starte Nginx und überprüfe, ob alles korrekt funktioniert, indem du eine cURL-Anfrage an deinen lokalen Host sendest.
|
|
```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>
|
|
```
|
|
### Nginx Dockerisierte Version
|
|
```bash
|
|
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
|
|
cd nginx-ajp-docker
|
|
```
|
|
Ersetzen Sie `TARGET-IP` in `nginx.conf` durch die AJP-IP, dann bauen und ausführen.
|
|
```bash
|
|
docker build . -t nginx-ajp-proxy
|
|
docker run -it --rm -p 80:80 nginx-ajp-proxy
|
|
```
|
|
### Apache AJP-Proxy
|
|
|
|
Das Auftreten eines offenen Ports 8009 ohne andere zugängliche Web-Ports ist selten. Es ist jedoch immer noch möglich, dies mit **Metasploit** auszunutzen. Durch die Nutzung von **Apache** als Proxy können Anfragen auf den Port 8009 zu **Tomcat** umgeleitet werden.
|
|
```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
|
|
```
|
|
Diese Konfiguration bietet das Potenzial, Intrusion Detection und Prevention Systems (IDS/IPS) aufgrund der binären Natur des AJP-Protokolls zu umgehen, obwohl diese Fähigkeit nicht verifiziert wurde. Indem Sie einen regulären Metasploit Tomcat-Exploit auf `127.0.0.1:80` umleiten, können Sie effektiv die Kontrolle über das Zielssystem übernehmen.
|
|
```bash
|
|
msf exploit(tomcat_mgr_deploy) > show options
|
|
```
|
|
## Referenzen
|
|
|
|
* [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 (380).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
|
|
|
|
**Hacking-Einblicke**\
|
|
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen
|
|
|
|
**Echtzeit-Hack-News**\
|
|
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden
|
|
|
|
**Neueste Ankündigungen**\
|
|
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattformupdates informiert
|
|
|
|
**Treten Sie uns bei** auf [**Discord**](https://discord.com/invite/N3FrSbmwdy) und beginnen Sie noch heute mit der Zusammenarbeit mit Top-Hackern!
|
|
|
|
<details>
|
|
|
|
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
|
|
|
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
|
|
|
|
</details>
|