Basic Tomcat Info

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Grupa Try Hard Security


Unikaj uruchamiania jako root

Aby nie uruchamiać Tomcata jako root, bardzo częstą konfiguracją jest ustawienie serwera Apache na porcie 80/443 i, jeśli żądana ścieżka pasuje do wyrażenia regularnego, żądanie jest przesyłane do Tomcata działającego na innym porcie.

Domyślna struktura

├── 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
  • Folder bin przechowuje skrypty i pliki binarne potrzebne do uruchomienia serwera Tomcat.

  • Folder conf przechowuje różne pliki konfiguracyjne używane przez Tomcat.

  • Plik tomcat-users.xml przechowuje dane uwierzytelniające użytkowników i ich przypisane role.

  • Folder lib zawiera różne pliki JAR potrzebne do poprawnego działania Tomcat.

  • Foldery logs i temp przechowują tymczasowe pliki dziennika.

  • Folder webapps jest domyślnym katalogiem głównym Tomcat i zawiera wszystkie aplikacje. Folder work działa jako pamięć podręczna i służy do przechowywania danych podczas działania.

Oczekuje się, że każdy folder wewnątrz webapps będzie miał następującą strukturę.

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

Najważniejszym plikiem spośród nich jest WEB-INF/web.xml, który jest znany jako deskryptor wdrożenia. Ten plik przechowuje informacje o trasach używanych przez aplikację oraz klasy obsługujące te trasy. Wszystkie skompilowane klasy używane przez aplikację powinny być przechowywane w folderze WEB-INF/classes. Te klasy mogą zawierać ważną logikę biznesową oraz poufne informacje. Każda podatność w tych plikach może prowadzić do całkowitego skompromitowania strony internetowej. Folder lib przechowuje biblioteki potrzebne dla danej aplikacji. Folder jsp przechowuje Jakarta Server Pages (JSP), wcześniej znane jako JavaServer Pages, które można porównać do plików PHP na serwerze Apache.

Oto przykładowy plik 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>

Konfiguracja web.xml powyżej definiuje nowy serwlet o nazwie AdminServlet, który jest odwzorowany do klasy com.inlanefreight.api.AdminServlet. Java używa notacji kropkowej do tworzenia nazw pakietów, co oznacza, że ścieżka na dysku dla zdefiniowanej powyżej klasy będzie:

  • classes/com/inlanefreight/api/AdminServlet.class

Następnie tworzony jest nowy odwzorowanie serwletu, aby odwzorować żądania na /admin z AdminServlet. Ta konfiguracja przekieruje każde żądanie otrzymane dla /admin do klasy AdminServlet.class w celu przetworzenia. Deskryptor web.xml zawiera wiele wrażliwych informacji i jest ważnym plikiem do sprawdzenia podczas wykorzystywania podatności Local File Inclusion (LFI).

tomcat-users

Plik tomcat-users.xml jest używany do zezwolenia lub zabrania dostępu do stron administracyjnych /manager i 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>

Plik pokazuje, do czego dostęp zapewniają role manager-gui, manager-script, manager-jmx i manager-status. W tym przykładzie widzimy, że użytkownik tomcat z hasłem tomcat ma rolę manager-gui, a drugie słabe hasło admin jest ustawione dla konta użytkownika admin.

Referencje

Try Hard Security Group

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Last updated