11 KiB
8009 - Pentesting Apache JServ Protocol (AJP)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Suivez HackenProof pour en savoir plus sur les bugs web3
🐞 Lisez les tutoriels de bugs web3
🔔 Recevez des notifications sur les nouveaux programmes de primes de bugs
💬 Participez aux discussions de la communauté
Informations de base
À partir de : https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP est un protocole de transmission de données. Il s'agit d'une version optimisée du protocole HTTP qui permet à un serveur web autonome tel que Apache 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 cela est possible, mais de faire passer la demande à Tomcat pour le contenu lié à Tomcat.
Aussi intéressant :
Le protocole ajp13 est orienté paquets. Un format binaire a é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 élevé de la création de sockets, le serveur web tentera de maintenir des connexions TCP persistantes avec le conteneur de servlets et de réutiliser une connexion pour plusieurs cycles de demande/réponse.
Port par défaut : 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
Si le port AJP est exposé, Tomcat pourrait être vulnérable à la vulnérabilité Ghostcat. Voici une exploit 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 encore inclure des fichiers tels que WEB-INF/web.xml
qui peuvent divulguer des informations importantes telles que les identifiants pour l'interface Tomcat, en fonction de la configuration du serveur.
Les versions corrigées à 9.0.31 ou supérieures, 8.5.51 et 7.0.100 ont résolu ce problème.
Énumération
Automatique
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
Brute force
Proxy AJP
Proxy AJP Apache
Il est rare de rencontrer le port 8009 ouvert et aucun autre port web ouvert. Dans ce cas, il serait agréable d'utiliser des outils existants comme Metasploit pour le pirater, n'est-ce pas ? Comme indiqué dans l'une des citations, vous pouvez (ab)user d'Apache pour acheminer les demandes vers le port Tomcat 8009. Dans les références, vous trouverez un guide pratique sur la façon de le faire (lisez-le d'abord), ce qui suit est simplement un aperçu des commandes que j'ai utilisées sur ma propre machine. J'ai omis certaines des instructions d'origine car elles ne semblaient pas nécessaires.
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
Un effet secondaire intéressant de l'utilisation de cette configuration est que vous pourriez contrecarrer les systèmes IDS/IPS en place, car le protocole AJP est quelque peu binaire, mais je n'ai pas vérifié cela. Maintenant, vous pouvez simplement pointer votre exploit tomcat metasploit habituel vers 127.0.0.1:80 et prendre le contrôle de ce système. Voici également la sortie de metasploit :
msf exploit(tomcat_mgr_deploy) > show options
Module options (exploit/multi/http/tomcat_mgr_deploy):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD tomcat no The password for the specified username
PATH /manager yes The URI path of the manager app (/deploy and /undeploy will be used)
Proxies no Use a proxy chain
RHOST localhost yes The target address
RPORT 80 yes The target port
USERNAME tomcat no The username to authenticate as
VHOST no HTTP server virtual host
Proxy inverse Nginx et AJP
Lorsque nous rencontrons un port proxy AJP ouvert (TCP 8009), 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:
- Téléchargez le code source de Nginx
- Téléchargez le module requis
- Compilez le code source de Nginx avec le module
ajp_module
. - Créez un fichier de configuration pointant vers le port AJP.
# 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 l'intégralité du bloc server
et ajoutez les lignes suivantes à l'intérieur du bloc http
dans /etc/nginx/conf/nginx.conf
.
upstream tomcats {
server <TARGET_SERVER>:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
Démarrez Nginx et vérifiez que tout fonctionne correctement en envoyant une requête cURL à votre hôte local.
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>
Références
Suivez HackenProof pour en savoir plus sur les bugs web3
🐞 Lisez des tutoriels sur les bugs web3
🔔 Recevez des notifications sur les nouveaux programmes de primes pour bugs
💬 Participez aux discussions de la communauté
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.