hacktricks/network-services-pentesting/pentesting-web/tomcat/basic-tomcat-info.md

9.1 KiB

Grundlegende Tomcat-Informationen

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}


Vermeiden Sie das Ausführen als Root

Um Tomcat nicht als 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 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 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), 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 obige Konfiguration in der web.xml definiert einen neuen Servlet mit dem Namen AdminServlet, der auf die Klasse com.inlanefreight.api.AdminServlet abgebildet ist. Java verwendet die Punkt-Notation, 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 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

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!