# Basic Tomcat Info {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * 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.
{% endhint %} ### Αποφύγετε να τρέχετε με root Για να μην τρέχει το Tomcat με root, μια πολύ κοινή ρύθμιση είναι να ρυθμίσετε έναν Apache server στην πόρτα 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)](https://en.wikipedia.org/wiki/Jakarta\_Server\_Pages), πρώην γνωστές ως `JavaServer Pages`, οι οποίες μπορούν να συγκριθούν με αρχεία PHP σε έναν διακομιστή Apache. Ακολουθεί ένα παράδειγμα **web.xml** αρχείου. ```xml AdminServlet com.inlanefreight.api.AdminServlet AdminServlet /admin ``` Ο конфигурация `web.xml` παραπάνω ορίζει μια **νέα servlet με όνομα `AdminServlet`** που είναι χαρτογραφημένη στην **κλάση `com.inlanefreight.api.AdminServlet`**. Η Java χρησιμοποιεί τη σημειογραφία τελείας για να δημιουργήσει ονόματα πακέτων, πράγμα που σημαίνει ότι η διαδρομή στον δίσκο για την κλάση που ορίστηκε παραπάνω θα είναι: * **`classes/com/inlanefreight/api/AdminServlet.class`** Στη συνέχεια, δημιουργείται μια νέα χαρτογράφηση servlet για **να χαρτογραφήσει αιτήματα στο `/admin` με `AdminServlet`**. Αυτή η ρύθμιση θα στείλει οποιοδήποτε αίτημα ληφθεί για **`/admin` στην κλάση `AdminServlet.class`** για επεξεργασία. Ο **`web.xml`** περιγραφέας περιέχει πολλές **ευαίσθητες πληροφορίες** και είναι ένα σημαντικό αρχείο για έλεγχο όταν εκμεταλλεύεστε μια **Local File Inclusion (LFI) vulnerability**. ### tomcat-users Το **`tomcat-users.xml`** αρχείο χρησιμοποιείται για **να επιτρέπει** ή να απαγορεύει την πρόσβαση στις **σελίδες διαχείρισης `/manager` και `host-manager`**. ```xml !-- user manager can access only manager section --> ``` Το αρχείο μας δείχνει τι παρέχει πρόσβαση σε κάθε έναν από τους ρόλους `manager-gui`, `manager-script`, `manager-jmx` και `manager-status`. Σε αυτό το παράδειγμα, μπορούμε να δούμε ότι ένας χρήστης `tomcat` με τον κωδικό πρόσβασης `tomcat` έχει τον ρόλο `manager-gui`, και ένας δεύτερος αδύναμος κωδικός πρόσβασης `admin` έχει οριστεί για τον λογαριασμό χρήστη `admin`. ## Αναφορές * [https://academy.hackthebox.com/module/113/section/1090](https://academy.hackthebox.com/module/113/section/1090) {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * 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.
{% endhint %}