9.8 KiB
Grundlegende Tomcat-Informationen
Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersicherheitsunternehmen? Möchten Sie Ihr Unternehmen in HackTricks bewerben? Oder möchten Sie Zugriff auf die neueste Version von PEASS oder HackTricks im PDF-Format haben? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie mir auf Twitter 🐦@carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das hacktricks repo und das hacktricks-cloud repo einreichen.
Finden Sie die wichtigsten Schwachstellen, damit Sie sie schneller beheben können. Intruder verfolgt Ihre Angriffsfläche, führt proaktive Bedrohungsscans durch und findet Probleme in Ihrer gesamten Technologie-Stack, von APIs über Webanwendungen bis hin zu Cloud-Systemen. Probieren Sie es noch heute kostenlos aus.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Vermeiden Sie das Ausführen als Root
Um Tomcat nicht als Root auszuführen, ist eine sehr häufige Konfiguration, einen Apache-Server auf Port 80/443 einzurichten und wenn der angeforderte Pfad mit einem regulären Ausdruck übereinstimmt, wird die Anfrage an Tomcat gesendet, der auf einem anderen Port läuft.
Standardstruktur
├── 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
- Der
bin
-Ordner enthält Skripte und Binärdateien, die zum Starten und Ausführen eines Tomcat-Servers benötigt werden. - Der
conf
-Ordner enthält verschiedene Konfigurationsdateien, die von Tomcat verwendet werden. - Die Datei
tomcat-users.xml
speichert Benutzeranmeldeinformationen und ihre zugewiesenen Rollen. - Der
lib
-Ordner enthält die verschiedenen JAR-Dateien, die für das ordnungsgemäße Funktionieren von Tomcat benötigt werden. - Die Ordner
logs
undtemp
speichern temporäre Protokolldateien. - Der
webapps
-Ordner ist das Standard-Webroot von Tomcat und enthält alle Anwendungen. Derwork
-Ordner fungiert als Cache und wird verwendet, um Daten während der Laufzeit zu speichern.
Es wird erwartet, dass jeder Ordner innerhalb von webapps
die folgende Struktur hat.
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
Die wichtigste Datei unter diesen ist WEB-INF/web.xml
, die als Bereitstellungsbeschreibung bekannt ist. Diese Datei speichert Informationen über die Routen, die von der Anwendung verwendet werden, und die Klassen, die diese Routen verarbeiten.
Alle kompilierten Klassen, die von der Anwendung verwendet werden, sollten im Ordner WEB-INF/classes
gespeichert werden. Diese Klassen können wichtige Geschäftslogik sowie sensible Informationen enthalten. Jede Schwachstelle in diesen Dateien kann zu einer vollständigen Kompromittierung der Website führen. Der Ordner lib
speichert die für diese bestimmte Anwendung benötigten Bibliotheken. Der Ordner jsp
speichert Jakarta Server Pages (JSP), früher bekannt als JavaServer Pages
, die mit PHP-Dateien auf einem Apache-Server verglichen werden können.
Hier ist ein Beispiel für eine web.xml-Datei.
<?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>
Die oben gezeigte web.xml
-Konfiguration definiert einen neuen Servlet mit dem Namen AdminServlet
, der der Klasse com.inlanefreight.api.AdminServlet
zugeordnet ist. Java verwendet die Punkt-Schreibweise, um Paketnamen zu erstellen, was bedeutet, dass der Pfad auf der Festplatte für die oben definierte Klasse wie folgt wäre:
classes/com/inlanefreight/api/AdminServlet.class
Als nächstes wird eine neue Servlet-Mapping erstellt, um Anfragen an /admin
mit AdminServlet
zu verknüpfen. Diese Konfiguration leitet jede Anfrage für /admin
an die Klasse AdminServlet.class
zur Verarbeitung weiter. Die web.xml
-Beschreibung enthält viele sensible Informationen und ist eine wichtige Datei, die überprüft werden sollte, wenn eine Local File Inclusion (LFI) Schwachstelle ausgenutzt wird.
tomcat-users
Die Datei tomcat-users.xml
wird verwendet, um den Zugriff auf die /manager
und host-manager
Admin-Seiten zu ermöglichen oder zu verweigern.
<?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>
Die Datei zeigt uns, auf welche Funktionen jeder der Rollen manager-gui
, manager-script
, manager-jmx
und manager-status
Zugriff hat. In diesem Beispiel sehen wir, dass ein Benutzer tomcat
mit dem Passwort tomcat
die Rolle manager-gui
hat und ein zweites schwaches Passwort admin
für das Benutzerkonto admin
festgelegt ist.
Referenzen
Finden Sie die wichtigsten Schwachstellen, damit Sie sie schneller beheben können. Intruder verfolgt Ihre Angriffsfläche, führt proaktive Bedrohungsscans durch und findet Probleme in Ihrer gesamten Technologie-Stack, von APIs über Webanwendungen bis hin zu Cloud-Systemen. Probieren Sie es noch heute kostenlos aus.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersecurity-Unternehmen? Möchten Sie Ihr Unternehmen in HackTricks bewerben? Oder möchten Sie Zugriff auf die neueste Version des PEASS oder HackTricks als PDF-Download haben? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie mir auf Twitter 🐦@carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das hacktricks-Repo und das hacktricks-cloud-Repo senden.