hacktricks/network-services-pentesting/pentesting-web/tomcat/basic-tomcat-info.md
2024-02-11 01:46:25 +00:00

9.4 KiB

Podstawowe informacje o Tomcat

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

Znajdź najważniejsze podatności, aby móc je szybko naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. Wypróbuj go za darmo już dziś.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}


Unikaj uruchamiania jako root

Aby nie uruchamiać Tomcat jako root, bardzo częstą konfiguracją jest ustawienie serwera Apache na porcie 80/443 i jeśli żądany ścieżka pasuje do wyrażenia regularnego, żądanie jest przesyłane do Tomcat 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
  • Foldera bin przechowuje skrypty i pliki binarne potrzebne do uruchomienia i działania 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 przypisane im 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 w trakcie 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 wrażliwe informacje. Jakakolwiek 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>

Plik konfiguracyjny web.xml powyżej definiuje nowy servlet o nazwie AdminServlet, który jest mapowany do klasy com.inlanefreight.api.AdminServlet. W Javie używa się notacji kropkowej do tworzenia nazw pakietów, co oznacza, że ścieżka na dysku dla powyższej klasy będzie:

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

Następnie tworzony jest nowy mapowanie servletu, aby mapować żą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 na Local File Inclusion (LFI).

tomcat-users

Plik tomcat-users.xml jest używany do zezwolenia lub zabronienia 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 daje dostęp każda z ról manager-gui, manager-script, manager-jmx i manager-status. W tym przykładzie możemy zobaczyć, że użytkownik tomcat o haśle tomcat ma rolę manager-gui, a drugie słabe hasło admin jest ustawione dla konta użytkownika admin.

Odnośniki

Znajdź najważniejsze podatności, aby szybko je naprawić. Intruder śledzi powierzchnię ataku, wykonuje proaktywne skanowanie zagrożeń, znajduje problemy w całym stosie technologicznym, od interfejsów API po aplikacje internetowe i systemy chmurowe. Wypróbuj go za darmo już dziś.

{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}

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