Basic Tomcat Info

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team του HackTricks στο AWS)!

Try Hard Security Group


Αποφύγετε την εκτέλεση με root

Για να μην εκτελείται το Tomcat με δικαιώματα root, μια πολύ συνηθισμένη ρύθμιση είναι να οριστεί ένας διακομιστής Apache στη θύρα 80/443 και, εάν το αιτούμενο μονοπάτι ταιριάζει με έναν τυπικό εκφρασμένο όρο, το αίτημα στέλνεται στο 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 αποθηκεύει scripts και δυαδικά αρχεία που χρειάζονται για την εκκίνηση και λειτουργία ενός διακομιστή Tomcat.

  • Ο φάκελος conf αποθηκεύει διάφορα αρχεία ρυθμίσεων που χρησιμοποιούνται από το Tomcat.

  • Το αρχείο tomcat-users.xml αποθηκεύει τα διαπιστευτήρια των χρηστών και τους ρόλους που τους έχουν ανατεθεί.

  • Ο φάκελος lib περιέχει τα διάφορα αρχεία JAR που χρειάζονται για τη σωστή λειτουργία του Tomcat.

  • Οι φάκελοι logs και temp αποθηκεύουν προσωρινά αρχεία καταγραφής.

  • Ο φάκελος webapps είναι η προεπιλεγμένη ρίζα του Tomcat και φιλοξενεί όλες τις εφαρμογές. Ο φάκελος work λειτουργεί ως cache και χρησιμοποιείται για την αποθήκευση δεδομένων κατά τη διάρκεια της εκτέλεσης.

Αναμένεται ότι κάθε φάκελος μέσα στον 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 περιέχει πολλές ευαίσθητες πληροφορίες και είναι ένα σημαντικό αρχείο για έλεγχο κατά την εκμετάλλευση μιας ευπάθειας τοπικής συμπερίληψης αρχείου (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

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Last updated