8009 - Pentesting Apache JServ Protocol (AJP)
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.
Informations de base
From https://diablohorn.com/2011/10/19/8009-the-forgotten-tomcat-port/
AJP est un protocole de communication. C'est une version optimisĂ©e du protocole HTTP pour permettre Ă un serveur web autonome tel qu'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 c'est possible, mais de faire passer la requĂȘte Ă Tomcat pour le contenu liĂ© Ă Tomcat.
Aussi intéressant :
Le protocole ajp13 est orientĂ© paquet. 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 processus coĂ»teux de 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 requĂȘte/rĂ©ponse.
Port par défaut : 8009
PORT STATE SERVICE
8009/tcp open ajp13
CVE-2020-1938 'Ghostcat'
C'est une vulnérabilité LFI qui permet d'accéder à certains fichiers comme WEB-INF/web.xml
qui contient des identifiants. C'est un exploit pour abuser de la vulnĂ©rabilitĂ© et les ports exposĂ©s AJP pourraient y ĂȘtre vulnĂ©rables.
Les versions corrigées sont à partir de 9.0.31, 8.5.51 et 7.0.100.
Enumeration
Automatic
nmap -sV --script ajp-auth,ajp-headers,ajp-methods,ajp-request -n -p 8009 <IP>
Brute force
Proxy AJP
Nginx Reverse Proxy + AJP
(Consultez la version Dockerisée)
Il est possible de communiquer avec un port proxy AJP ouvert (8009 TCP) en utilisant le module apache ajp_module
de Nginx et d'accéder au Tomcat Manager depuis ce port, ce qui pourrait finalement conduire à une RCE sur le serveur vulnérable.
- Commencez par télécharger Nginx depuis https://nginx.org/en/download.html puis compilez-le avec le module ajp :
# 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
- Ensuite, commentez le bloc
server
et ajoutez ce qui suit dans le blochttp
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;
}
}
- Enfin, démarrez nginx (
sudo nginx
) et vĂ©rifiez qu'il fonctionne en accĂ©dant Ăhttp://127.0.0.1
Version Dockerisée de Nginx
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.
docker build . -t nginx-ajp-proxy
docker run -it --rm -p 80:80 nginx-ajp-proxy
Proxy AJP Apache
Il est également possible d'utiliser un proxy AJP Apache pour accéder à ce port au lieu de Nginx.
Références
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.