mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-19 09:34:03 +00:00
154 lines
8.7 KiB
Markdown
154 lines
8.7 KiB
Markdown
# Grundlegende Tomcat-Informationen
|
|
|
|
<details>
|
|
|
|
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks beworben sehen**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
|
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs zum [HackTricks-Repository](https://github.com/carlospolop/hacktricks) und [HackTricks-Cloud-Repository](https://github.com/carlospolop/hacktricks-cloud) einreichen**.
|
|
|
|
</details>
|
|
|
|
### Vermeiden Sie die Ausführung mit Root
|
|
|
|
Um Tomcat nicht mit Root auszuführen, ist eine sehr verbreitete 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 speichert Skripte und Binärdateien, die zum Starten und Ausführen eines Tomcat-Servers benötigt werden.
|
|
* Der `conf`-Ordner speichert 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 korrekte Funktionieren von Tomcat benötigt werden.
|
|
* Die Ordner `logs` und `temp` speichern temporäre Protokolldateien.
|
|
* Der `webapps`-Ordner ist das Standard-Webroot von Tomcat und hostet alle Anwendungen. Der `work`-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 behandeln.\
|
|
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 einem vollständigen Kompromittieren der Website führen. Der `lib`-Ordner speichert die für diese bestimmte Anwendung benötigten Bibliotheken. Der `jsp`-Ordner speichert [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), 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
|
|
<?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 obige Konfiguration in der `web.xml` definiert ein **neues Servlet mit dem Namen `AdminServlet`**, das auf die **Klasse `com.inlanefreight.api.AdminServlet`** abgebildet ist. Java verwendet die Punkt-Schreibweise, um Paketnamen zu erstellen, was bedeutet, dass der Pfad auf der Festplatte für die oben definierte Klasse wäre:
|
|
|
|
* **`classes/com/inlanefreight/api/AdminServlet.class`**
|
|
|
|
Als nächstes wird ein neues Servlet-Mapping erstellt, um Anfragen an `/admin` mit `AdminServlet` abzubilden. Diese Konfiguration leitet jede Anfrage für **`/admin` an die Klasse `AdminServlet.class`** zur Verarbeitung weiter. Der **`web.xml`**-Deskriptor 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 **Admin-Seiten `/manager` und `host-manager`** zu **ermöglichen** oder zu verweigern.
|
|
```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>
|
|
```
|
|
Die Datei zeigt uns, auf welche Ressourcen die Rollen `manager-gui`, `manager-script`, `manager-jmx` und `manager-status` Zugriff gewähren. 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
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1090](https://academy.hackthebox.com/module/113/section/1090)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks beworben sehen**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS erhalten oder HackTricks im PDF-Format herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
|
|
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das [hacktricks-Repository](https://github.com/carlospolop/hacktricks) und das [hacktricks-cloud-Repository](https://github.com/carlospolop/hacktricks-cloud)** einreichen.
|
|
|
|
</details>
|