# Informations de base sur Tomcat
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * 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)**.
### É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 AdminServlet com.inlanefreight.api.AdminServlet AdminServlet /admin ``` 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 !-- user manager can access only manager section --> ``` 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)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * 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)**.