10 KiB
Basic Tomcat Info
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Αποφύγετε να τρέχετε με 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
.
Αναφορές
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.