10 KiB
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 !
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des analyses de menaces proactives, trouve des problèmes dans toute votre pile technologique, des API aux applications web et aux systèmes cloud. Essayez-le gratuitement dès aujourd'hui.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Évitez de l'exécuter avec les droits root
Pour ne pas exécuter Tomcat avec les droits 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 les 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 attribués. - Le dossier
lib
contient les différents fichiers JAR nécessaires au bon fonctionnement de Tomcat. - Les dossiers
logs
ettemp
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 dossierwork
agit comme un cache et est utilisé pour stocker des données pendant l'exécution.
Il est attendu 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 entraîner une compromission totale du site web. Le dossier lib
stocke les bibliothèques nécessaires à cette application spécifique. Le dossier jsp
stocke les Jakarta Server Pages (JSP), 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 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>
Le fichier de 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, une nouvelle correspondance de servlet est créée pour mapper les requêtes vers /admin
avec AdminServlet
. Cette configuration enverra toute requête 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 refuser l'accès aux pages d'administration /manager
et host-manager
.
<?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 à quoi donnent accès chacun des rôles manager-gui
, manager-script
, manager-jmx
et manager-status
. 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
Trouvez les vulnérabilités les plus importantes afin de pouvoir les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des analyses de menace proactives et détecte des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. Essayez-le gratuitement dès aujourd'hui.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
☁️ 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 !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au référentiel hacktricks et hacktricks-cloud.