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

175 lines
11 KiB
Markdown
Raw Normal View History

2024-04-06 18:31:47 +00:00
# Basic Tomcat Info
2022-10-02 23:29:55 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-10-02 23:29:55 +00:00
<details>
<summary>Support HackTricks</summary>
2022-10-02 23:29:55 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-10-02 23:29:55 +00:00
</details>
{% endhint %}
2022-10-02 23:29:55 +00:00
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
### Αποφύγετε να τρέχετε με root
2022-10-02 23:29:55 +00:00
Για να μην τρέχει το Tomcat με root, μια πολύ κοινή ρύθμιση είναι να ρυθμίσετε έναν Apache server στην πόρτα 80/443 και, αν η ζητούμενη διαδρομή ταιριάζει με μια regexp, το αίτημα αποστέλλεται στο Tomcat που τρέχει σε διαφορετική πόρτα.
2024-04-06 18:31:47 +00:00
### Default Structure
2022-10-02 23:29:55 +00:00
```
├── 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
2024-02-10 22:40:18 +00:00
└── Catalina
└── localhost
2022-10-02 23:29:55 +00:00
```
* Ο φάκελος `bin` αποθηκεύει σενάρια και δυαδικά αρχεία που απαιτούνται για την εκκίνηση και λειτουργία ενός διακομιστή Tomcat.
2024-02-10 22:40:18 +00:00
* Ο φάκελος `conf` αποθηκεύει διάφορα αρχεία ρυθμίσεων που χρησιμοποιούνται από το Tomcat.
* Το αρχείο `tomcat-users.xml` αποθηκεύει διαπιστευτήρια χρηστών και τους ανατεθέντες ρόλους τους.
* Ο φάκελος `lib` περιέχει τα διάφορα αρχεία JAR που απαιτούνται για τη σωστή λειτουργία του Tomcat.
2024-02-10 22:40:18 +00:00
* Οι φάκελοι `logs` και `temp` αποθηκεύουν προσωρινά αρχεία καταγραφής.
* Ο φάκελος `webapps` είναι η προεπιλεγμένη ριζική τοποθεσία ιστού του Tomcat και φιλοξενεί όλες τις εφαρμογές. Ο φάκελος `work` λειτουργεί ως κρυφή μνήμη και χρησιμοποιείται για την αποθήκευση δεδομένων κατά τη διάρκεια της εκτέλεσης.
2024-04-06 18:31:47 +00:00
Κάθε φάκελος μέσα στον `webapps` αναμένεται να έχει την εξής δομή.
2022-10-02 23:29:55 +00:00
```
webapps/customapp
├── images
├── index.jsp
├── META-INF
│ └── context.xml
├── status.xsd
└── WEB-INF
2024-02-10 22:40:18 +00:00
├── jsp
| └── admin.jsp
└── web.xml
└── lib
| └── jdbc_drivers.jar
└── classes
└── AdminServlet.class
2022-10-02 23:29:55 +00:00
```
Το πιο σημαντικό αρχείο ανάμεσα σε αυτά είναι το `WEB-INF/web.xml`, το οποίο είναι γνωστό ως ο περιγραφέας ανάπτυξης. Αυτό το αρχείο αποθηκεύει **πληροφορίες σχετικά με τις διαδρομές** που χρησιμοποιούνται από την εφαρμογή και τις κλάσεις που χειρίζονται αυτές τις διαδρομές.\
Όλες οι μεταγλωττισμένες κλάσεις που χρησιμοποιούνται από την εφαρμογή θα πρέπει να αποθηκεύονται στον φάκελο `WEB-INF/classes`. Αυτές οι κλάσεις μπορεί να περιέχουν σημαντική επιχειρηματική λογική καθώς και ευαίσθητες πληροφορίες. Οποιαδήποτε ευπάθεια σε αυτά τα αρχεία μπορεί να οδηγήσει σε πλήρη συμβιβασμό της ιστοσελίδας. Ο φάκελος `lib` αποθηκεύει τις βιβλιοθήκες που απαιτούνται από αυτήν την συγκεκριμένη εφαρμογή. Ο φάκελος `jsp` αποθηκεύει [Jakarta Server Pages (JSP)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), πρώην γνωστές ως `JavaServer Pages`, οι οποίες μπορούν να συγκριθούν με αρχεία PHP σε έναν διακομιστή Apache.
2024-04-06 18:31:47 +00:00
Ακολουθεί ένα παράδειγμα αρχείου **web.xml**.
2022-10-02 23:29:55 +00:00
```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>
2024-02-10 22:40:18 +00:00
<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>
2022-10-02 23:29:55 +00:00
```
Ο конфигурация `web.xml` παραπάνω ορίζει μια **νέα servlet με όνομα `AdminServlet`** που είναι χαρτογραφημένη στην **κλάση `com.inlanefreight.api.AdminServlet`**. Η Java χρησιμοποιεί τη σημειογραφία τελείας για να δημιουργήσει ονόματα πακέτων, πράγμα που σημαίνει ότι η διαδρομή στον δίσκο για την κλάση που ορίστηκε παραπάνω θα είναι:
2022-10-02 23:29:55 +00:00
* **`classes/com/inlanefreight/api/AdminServlet.class`**
Στη συνέχεια, δημιουργείται μια νέα χαρτογράφηση servlet για **να χαρτογραφήσει αιτήματα στο `/admin` με `AdminServlet`**. Αυτή η ρύθμιση θα στείλει οποιοδήποτε αίτημα ληφθεί για **`/admin` στην κλάση `AdminServlet.class`** για επεξεργασία. Ο **`web.xml`** περιγραφέας περιέχει πολλές **ευαίσθητες πληροφορίες** και είναι ένα σημαντικό αρχείο για έλεγχο όταν εκμεταλλεύεστε μια **Local File Inclusion (LFI) vulnerability**.
2022-10-02 23:29:55 +00:00
### tomcat-users
Το **`tomcat-users.xml`** αρχείο χρησιμοποιείται για **να επιτρέπει** ή να απαγορεύει την πρόσβαση στις **σελίδες διαχείρισης `/manager` και `host-manager`**.
2022-10-02 23:29:55 +00:00
```xml
<?xml version="1.0" encoding="UTF-8"?>
<SNIP>
2024-02-10 22:40:18 +00:00
2022-10-02 23:29:55 +00:00
<tomcat-users xmlns="http://tomcat.apache.org/xml"
2024-02-10 22:40:18 +00:00
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
2022-10-02 23:29:55 +00:00
<!--
2024-02-10 22:40:18 +00:00
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.
2022-10-02 23:29:55 +00:00
-->
2024-02-10 22:40:18 +00:00
<SNIP>
2022-10-02 23:29:55 +00:00
!-- 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`.
2022-10-02 23:29:55 +00:00
2024-02-10 22:40:18 +00:00
## Αναφορές
2022-10-02 23:29:55 +00:00
* [https://academy.hackthebox.com/module/113/section/1090](https://academy.hackthebox.com/module/113/section/1090)
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-10-02 23:29:55 +00:00
<details>
<summary>Υποστήριξη HackTricks</summary>
2022-10-02 23:29:55 +00:00
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-10-02 23:29:55 +00:00
</details>
{% endhint %}