Basic Tomcat Info

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Група Try Hard Security


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

Для того щоб не запускати Tomcat з root, дуже поширеною конфігурацією є встановлення сервера Apache на порту 80/443 і, якщо запитаний шлях відповідає regexp, запит відправляється до 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

Посилання

Група з безпеки Try Hard Security

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Last updated