mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
118 lines
5.2 KiB
Markdown
118 lines
5.2 KiB
Markdown
# 8009 - Pentesting Apache JServ Protocol (AJP)
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
<figure><img src="../images/image (3).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Tritt dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
|
|
|
|
**Hacking Insights**\
|
|
Engagiere dich mit Inhalten, die in die Aufregung und Herausforderungen des Hackens eintauchen
|
|
|
|
**Echtzeit-Hack-Nachrichten**\
|
|
Bleibe auf dem Laufenden über die schnelllebige Hackerwelt durch Echtzeitnachrichten und Einblicke
|
|
|
|
**Neueste Ankündigungen**\
|
|
Bleibe informiert über die neuesten Bug-Bounties und wichtige Plattform-Updates
|
|
|
|
**Tritt uns bei auf** [**Discord**](https://discord.com/invite/N3FrSbmwdy) und beginne noch heute mit den besten Hackern zusammenzuarbeiten!
|
|
|
|
## Grundinformationen
|
|
|
|
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 ist eine optimierte Version des HTTP-Protokolls, um einem eigenständigen Webserver wie [Apache](http://httpd.apache.org/) die Kommunikation mit Tomcat zu ermöglichen. Historisch gesehen war Apache beim Bereitstellen von statischen Inhalten viel schneller als Tomcat. Die Idee ist, Apache die statischen Inhalte bereitstellen zu lassen, wenn möglich, aber die Anfrage an Tomcat für Tomcat-bezogene Inhalte weiterzuleiten.
|
|
|
|
Auch interessant:
|
|
|
|
> Das ajp13-Protokoll ist paketorientiert. Ein binäres Format wurde vermutlich aus Leistungsgründen gegenüber dem lesbareren Klartext gewählt. Der Webserver kommuniziert über TCP-Verbindungen mit dem Servlet-Container. Um den kostspieligen 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)
|
|
|
|
Dies ist eine LFI-Schwachstelle, die es ermöglicht, einige Dateien wie `WEB-INF/web.xml` abzurufen, die Anmeldeinformationen enthalten. Dies ist ein [Exploit](https://www.exploit-db.com/exploits/48143), um die Schwachstelle auszunutzen, und AJP exponierte Ports könnten dafür anfällig sein.
|
|
|
|
Die gepatchten Versionen sind 9.0.31 oder höher, 8.5.51 und 7.0.100.
|
|
|
|
## Enumeration
|
|
|
|
### Automatic
|
|
```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
|
|
|
|
([Überprüfen Sie die Dockerisierte Version](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version))
|
|
|
|
Es ist möglich, mit einem offenen AJP-Proxy-Port (8009 TCP) zu kommunizieren, indem das Nginx `ajp_module` Apache-Modul verwendet wird, und auf den Tomcat Manager von diesem Port aus zuzugreifen, was letztendlich zu RCE auf dem anfälligen Server führen könnte.
|
|
|
|
- Laden Sie Nginx von [https://nginx.org/en/download.html](https://nginx.org/en/download.html) herunter und kompilieren Sie es dann mit dem AJP-Modul:
|
|
```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
|
|
```
|
|
- Kommentieren Sie den `server`-Block und fügen Sie Folgendes im `http`-Block in `/etc/nginx/conf/nginx.conf` hinzu.
|
|
```json
|
|
upstream tomcats {
|
|
server <TARGET_SERVER>:8009;
|
|
keepalive 10;
|
|
}
|
|
server {
|
|
listen 80;
|
|
location / {
|
|
ajp_keep_conn on;
|
|
ajp_pass tomcats;
|
|
}
|
|
}
|
|
```
|
|
- Schließlich starten Sie nginx (`sudo nginx`) und überprüfen Sie, ob es funktioniert, indem Sie `http://127.0.0.1` aufrufen.
|
|
|
|
### 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 und bauen Sie dann das Projekt und führen Sie es aus.
|
|
```bash
|
|
docker build . -t nginx-ajp-proxy
|
|
docker run -it --rm -p 80:80 nginx-ajp-proxy
|
|
```
|
|
### Apache AJP Proxy
|
|
|
|
Es ist auch möglich, einen **Apache AJP-Proxy** zu verwenden, um auf diesen Port zuzugreifen, anstatt **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>
|
|
|
|
Tritt dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
|
|
|
|
**Hacking Insights**\
|
|
Engagieren Sie sich mit Inhalten, die in die Aufregung und Herausforderungen des Hackens eintauchen
|
|
|
|
**Real-Time Hack News**\
|
|
Bleiben Sie auf dem Laufenden über die schnelllebige Hackerwelt durch Echtzeitnachrichten und Einblicke
|
|
|
|
**Latest Announcements**\
|
|
Bleiben Sie informiert über die neuesten Bug-Bounties, die gestartet werden, und wichtige Plattform-Updates
|
|
|
|
**Join us on** [**Discord**](https://discord.com/invite/N3FrSbmwdy) und beginnen Sie noch heute mit den besten Hackern zusammenzuarbeiten!
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|