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

204 lines
10 KiB
Markdown
Raw Normal View History

2022-05-01 13:25:53 +00:00
# 8009 - Pentesting Apache JServ Protocol (AJP)
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Autres façons de soutenir HackTricks:
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
2023-06-03 13:10:46 +00:00
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2022-11-05 09:07:43 +00:00
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des pirates expérimentés et des chasseurs de primes en bugs !
2023-02-27 09:28:45 +00:00
**Perspicacité en piratage**\
Engagez-vous avec du contenu qui explore le frisson et les défis du piratage
2023-02-27 09:28:45 +00:00
**Actualités de piratage en temps réel**\
Restez à jour avec le monde du piratage rapide grâce aux actualités et aux informations en temps réel
2023-02-27 09:28:45 +00:00
**Dernières annonces**\
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
**Rejoignez-nous sur** [**Discord**](https://discord.com/invite/N3FrSbmwdy) et commencez à collaborer avec les meilleurs pirates dès aujourd'hui !
2022-11-05 09:07:43 +00:00
2023-06-03 13:10:46 +00:00
## Informations de base
De : [https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/](https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/)
> AJP est un protocole filaire. Il s'agit d'une version optimisée du protocole HTTP permettant à un serveur web autonome tel que [Apache](http://httpd.apache.org/) de communiquer avec Tomcat. Historiquement, Apache a été beaucoup plus rapide que Tomcat pour servir du contenu statique. L'idée est de laisser Apache servir le contenu statique lorsque c'est possible, mais de faire suivre la requête à Tomcat pour le contenu lié à Tomcat.
2023-06-03 13:10:46 +00:00
Aussi intéressant :
> Le protocole ajp13 est orienté paquets. Un format binaire a probablement été choisi plutôt que le texte brut plus lisible pour des raisons de performance. Le serveur web communique avec le conteneur de servlets via des connexions TCP. Pour réduire le coût du processus coûteux de création de socket, le serveur web tentera de maintenir des connexions TCP persistantes avec le conteneur de servlets, et de réutiliser une connexion pour de multiples cycles de requête/réponse
2023-06-03 13:10:46 +00:00
**Port par défaut :** 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)
Si le port AJP est exposé, Tomcat pourrait être vulnérable à la vulnérabilité Ghostcat. Voici un [exploit](https://www.exploit-db.com/exploits/48143) qui fonctionne avec ce problème.
Ghostcat est une vulnérabilité LFI, mais quelque peu restreinte : seuls les fichiers d'un certain chemin peuvent être extraits. Cela peut tout de même inclure des fichiers comme `WEB-INF/web.xml` qui peuvent divulguer des informations importantes telles que des identifiants pour l'interface Tomcat, en fonction de la configuration du serveur.
Les versions corrigées sont 9.0.31 ou supérieures, 8.5.51 et 7.0.100.
2023-06-03 13:10:46 +00:00
## Énumération
2023-06-03 13:10:46 +00:00
### Automatique
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)
## Proxy AJP
2022-10-03 13:43:01 +00:00
### Proxy Inverse Nginx & AJP
2022-10-03 13:43:01 +00:00
[Découvrez la version Dockerisée](8009-pentesting-apache-jserv-protocol-ajp.md#Dockerized-version)
Lorsque nous rencontrons un port proxy AJP ouvert (8009 TCP), nous pouvons utiliser Nginx avec le module `ajp_module` pour accéder au Gestionnaire Tomcat "caché". Cela peut être fait en compilant le code source de Nginx et en ajoutant le module requis, comme suit :
2023-06-03 13:10:46 +00:00
* Téléchargez le code source de Nginx
* Téléchargez le module requis
* Compilez le code source de Nginx avec le `ajp_module`.
* Créez un fichier de configuration pointant vers le port AJP
```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
```
<!-- Commentez tout le bloc `server` et ajoutez les lignes suivantes à l'intérieur du bloc `http` dans `/etc/nginx/conf/nginx.conf`. -->
2022-10-03 13:43:01 +00:00
```shell-session
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
2022-10-03 13:43:01 +00:00
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
2022-10-03 13:43:01 +00:00
}
```
Démarrez Nginx et vérifiez si tout fonctionne correctement en envoyant une requête cURL à votre hôte local.
2022-10-03 13:43:01 +00:00
```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>
2022-10-03 13:43:01 +00:00
<SNIP>
```
### Version dockerisée de Nginx
```bash
git clone https://github.com/ScribblerCoder/nginx-ajp-docker
cd nginx-ajp-docker
```
Remplacez `TARGET-IP` dans `nginx.conf` par l'IP AJP, puis construisez et exécutez.
```bash
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
```
### Proxy Apache AJP
2022-04-28 16:01:33 +00:00
Rencontrer un port ouvert 8009 sans autres ports web accessibles est rare. Cependant, il est toujours possible de l'exploiter en utilisant **Metasploit**. En utilisant **Apache** comme proxy, les requêtes peuvent être redirigées vers **Tomcat** sur le port 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
```
Ce paramétrage offre la possibilité de contourner les systèmes de détection et de prévention des intrusions (IDS/IPS) en raison de la nature binaire du protocole AJP, bien que cette capacité n'ait pas été vérifiée. En redirigeant une exploitation Tomcat Metasploit classique vers `127.0.0.1:80`, vous pouvez efficacement prendre le contrôle du système ciblé.
```bash
msf exploit(tomcat_mgr_deploy) > show options
```
## Références
* [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 (380).png" alt=""><figcaption></figcaption></figure>
Rejoignez le serveur [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) pour communiquer avec des hackers expérimentés et des chasseurs de bugs !
**Perspectives de piratage**\
Engagez-vous avec du contenu qui explore le frisson et les défis du piratage
2022-11-05 09:07:43 +00:00
**Actualités de piratage en temps réel**\
Restez à jour avec le monde du piratage en évolution rapide grâce aux actualités et aux informations en temps réel
2023-02-27 09:28:45 +00:00
**Dernières annonces**\
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme
2023-02-27 09:28:45 +00:00
**Rejoignez-nous sur** [**Discord**](https://discord.com/invite/N3FrSbmwdy) et commencez à collaborer avec les meilleurs hackers dès aujourd'hui !
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
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</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
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>