Basic Tomcat Info

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Αποφύγετε να τρέχετε με 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), πρώην γνωστές ως 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 παραπάνω ορίζει μια νέα 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 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.

Αναφορές

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated