Basic Tomcat Info

Support HackTricks

Уникайте запуску з правами root

Щоб не запускати Tomcat з правами root, дуже поширеною конфігурацією є налаштування сервера Apache на порту 80/443, і якщо запитуваний шлях відповідає регулярному виразу, запит надсилається до Tomcat, що працює на іншому порту.

Стандартна структура

├── 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
  • Папка bin зберігає скрипти та двійкові файли, необхідні для запуску та роботи сервера Tomcat.

  • Папка conf зберігає різні конфігураційні файли, які використовуються Tomcat.

  • Файл tomcat-users.xml зберігає облікові дані користувачів та їх призначені ролі.

  • Папка lib містить різні JAR-файли, необхідні для коректного функціонування Tomcat.

  • Папки logs та temp зберігають тимчасові файли журналів.

  • Папка webapps є стандартним веб-коренем Tomcat і містить всі додатки. Папка work діє як кеш і використовується для зберігання даних під час виконання.

Кожна папка всередині webapps повинна мати таку структуру.

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

Найважливішим файлом серед цих є WEB-INF/web.xml, який відомий як дескриптор розгортання. Цей файл зберігає інформацію про маршрути, які використовуються додатком, та класи, що обробляють ці маршрути. Усі скомпільовані класи, що використовуються додатком, повинні зберігатися у папці WEB-INF/classes. Ці класи можуть містити важливу бізнес-логіку, а також чутливу інформацію. Будь-яка вразливість у цих файлах може призвести до повного компромісу веб-сайту. Папка lib зберігає бібліотеки, необхідні для цього конкретного додатку. Папка jsp зберігає Jakarta Server Pages (JSP), раніше відомі як JavaServer Pages, які можна порівняти з PHP-файлами на сервері Apache.

Ось приклад 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>

Конфігурація web.xml вище визначає новий сервлет з ім'ям AdminServlet, який відображається на клас com.inlanefreight.api.AdminServlet. Java використовує крапкову нотацію для створення імен пакетів, що означає, що шлях на диску для вказаного вище класу буде:

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

Далі створюється нове відображення сервлета для відображення запитів на /admin з AdminServlet. Ця конфігурація надішле будь-який запит, отриманий для /admin до класу AdminServlet.class для обробки. Описник web.xml містить багато чутливої інформації і є важливим файлом для перевірки при використанні вразливості Local File Inclusion (LFI).

tomcat-users

Файл tomcat-users.xml використовується для дозволу або заборони доступу до адмінських сторінок /manager та 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>

Файл показує, до чого надають доступ кожна з ролей manager-gui, manager-script, manager-jmx та manager-status. У цьому прикладі ми можемо бачити, що користувач tomcat з паролем tomcat має роль manager-gui, а для облікового запису користувача admin встановлено другий слабкий пароль admin.

References

Support HackTricks

Last updated