mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-18 17:16:10 +00:00
154 lines
9.4 KiB
Markdown
154 lines
9.4 KiB
Markdown
# Informations de base sur 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 [**The PEASS Family**](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>
|
|
|
|
### Évitez de lancer avec root
|
|
|
|
Afin de ne pas exécuter Tomcat avec root, une configuration très courante consiste à configurer un serveur Apache sur le port 80/443 et, si le chemin demandé correspond à une expression régulière, la requête est envoyée à Tomcat s'exécutant sur un port différent.
|
|
|
|
### Structure par défaut
|
|
```
|
|
├── bin
|
|
├── conf
|
|
│ ├── catalina.policy
|
|
│ ├── catalina.properties
|
|
│ ├── context.xml
|
|
│ ├── tomcat-users.xml
|
|
│ ├── tomcat-users.xsd
|
|
│ └── web.xml
|
|
├── lib
|
|
├── logs
|
|
├── temp
|
|
├── webapps
|
|
│ ├── manager
|
|
│ │ ├── images
|
|
│ │ ├── META-INF
|
|
│ │ └── WEB-INF
|
|
| | └── web.xml
|
|
│ └── ROOT
|
|
│ └── WEB-INF
|
|
└── work
|
|
└── Catalina
|
|
└── localhost
|
|
```
|
|
* Le dossier `bin` stocke les scripts et binaires nécessaires pour démarrer et exécuter un serveur Tomcat.
|
|
* Le dossier `conf` stocke divers fichiers de configuration utilisés par Tomcat.
|
|
* Le fichier `tomcat-users.xml` stocke les informations d'identification des utilisateurs et leurs rôles assignés.
|
|
* Le dossier `lib` contient les différents fichiers JAR nécessaires au bon fonctionnement de Tomcat.
|
|
* Les dossiers `logs` et `temp` stockent des fichiers journaux temporaires.
|
|
* Le dossier `webapps` est le répertoire racine par défaut de Tomcat et héberge toutes les applications. Le dossier `work` agit comme un cache et est utilisé pour stocker des données pendant l'exécution.
|
|
|
|
On s'attend à ce que chaque dossier à l'intérieur de `webapps` ait la structure suivante.
|
|
```
|
|
webapps/customapp
|
|
├── images
|
|
├── index.jsp
|
|
├── META-INF
|
|
│ └── context.xml
|
|
├── status.xsd
|
|
└── WEB-INF
|
|
├── jsp
|
|
| └── admin.jsp
|
|
└── web.xml
|
|
└── lib
|
|
| └── jdbc_drivers.jar
|
|
└── classes
|
|
└── AdminServlet.class
|
|
```
|
|
Le fichier le plus important parmi ceux-ci est `WEB-INF/web.xml`, qui est connu sous le nom de descripteur de déploiement. Ce fichier stocke **des informations sur les routes** utilisées par l'application et les classes qui gèrent ces routes.\
|
|
Toutes les classes compilées utilisées par l'application doivent être stockées dans le dossier `WEB-INF/classes`. Ces classes peuvent contenir une logique métier importante ainsi que des informations sensibles. Toute vulnérabilité dans ces fichiers peut conduire à une compromission totale du site web. Le dossier `lib` stocke les bibliothèques nécessaires à cette application particulière. Le dossier `jsp` stocke les [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), anciennement connues sous le nom de `JavaServer Pages`, qui peuvent être comparées aux fichiers PHP sur un serveur Apache.
|
|
|
|
Voici un exemple de fichier **web.xml**.
|
|
```xml
|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
|
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
|
|
|
|
<web-app>
|
|
<servlet>
|
|
<servlet-name>AdminServlet</servlet-name>
|
|
<servlet-class>com.inlanefreight.api.AdminServlet</servlet-class>
|
|
</servlet>
|
|
|
|
<servlet-mapping>
|
|
<servlet-name>AdminServlet</servlet-name>
|
|
<url-pattern>/admin</url-pattern>
|
|
</servlet-mapping>
|
|
</web-app>
|
|
```
|
|
La configuration `web.xml` ci-dessus définit un **nouveau servlet nommé `AdminServlet`** qui est mappé à la **classe `com.inlanefreight.api.AdminServlet`**. Java utilise la notation point pour créer des noms de packages, ce qui signifie que le chemin sur le disque pour la classe définie ci-dessus serait :
|
|
|
|
* **`classes/com/inlanefreight/api/AdminServlet.class`**
|
|
|
|
Ensuite, un nouveau mappage de servlet est créé pour **mapper les requêtes vers `/admin` avec `AdminServlet`**. Cette configuration enverra toute demande reçue pour **`/admin` à la classe `AdminServlet.class`** pour traitement. Le descripteur **`web.xml`** contient beaucoup d'**informations sensibles** et est un fichier important à vérifier lors de l'exploitation d'une vulnérabilité de **Local File Inclusion (LFI)**.
|
|
|
|
### tomcat-users
|
|
|
|
Le fichier **`tomcat-users.xml`** est utilisé pour **autoriser** ou interdire l'accès aux pages d'administration **`/manager` et `host-manager`**.
|
|
```xml
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<SNIP>
|
|
|
|
<tomcat-users xmlns="http://tomcat.apache.org/xml"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
|
|
version="1.0">
|
|
<!--
|
|
By default, no user is included in the "manager-gui" role required
|
|
to operate the "/manager/html" web application. If you wish to use this app,
|
|
you must define such a user - the username and password are arbitrary.
|
|
|
|
Built-in Tomcat manager roles:
|
|
- manager-gui - allows access to the HTML GUI and the status pages
|
|
- manager-script - allows access to the HTTP API and the status pages
|
|
- manager-jmx - allows access to the JMX proxy and the status pages
|
|
- manager-status - allows access to the status pages only
|
|
|
|
The users below are wrapped in a comment and are therefore ignored. If you
|
|
wish to configure one or more of these users for use with the manager web
|
|
application, do not forget to remove the <!.. ..> that surrounds them. You
|
|
will also need to set the passwords to something appropriate.
|
|
-->
|
|
|
|
|
|
<SNIP>
|
|
|
|
!-- user manager can access only manager section -->
|
|
<role rolename="manager-gui" />
|
|
<user username="tomcat" password="tomcat" roles="manager-gui" />
|
|
|
|
<!-- user admin can access manager and admin section both -->
|
|
<role rolename="admin-gui" />
|
|
<user username="admin" password="admin" roles="manager-gui,admin-gui" />
|
|
|
|
|
|
</tomcat-users>
|
|
```
|
|
Le fichier nous montre ce à quoi chaque rôle `manager-gui`, `manager-script`, `manager-jmx` et `manager-status` donne accès. Dans cet exemple, nous pouvons voir qu'un utilisateur `tomcat` avec le mot de passe `tomcat` a le rôle `manager-gui`, et un deuxième mot de passe faible `admin` est défini pour le compte utilisateur `admin`.
|
|
|
|
## Références
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1090](https://academy.hackthebox.com/module/113/section/1090)
|
|
|
|
<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 [**The PEASS Family**](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>
|