Basic Tomcat Info

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Try Hard Security Group


Evitare di eseguire con privilegi di root

Per non eseguire Tomcat con privilegi di root, una configurazione molto comune è impostare un server Apache sulla porta 80/443 e, se il percorso richiesto corrisponde a una regex, la richiesta viene inviata a Tomcat in esecuzione su una porta diversa.

Struttura predefinita

├── 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
  • La cartella bin memorizza script ed eseguibili necessari per avviare e eseguire un server Tomcat.

  • La cartella conf memorizza vari file di configurazione utilizzati da Tomcat.

  • Il file tomcat-users.xml memorizza le credenziali degli utenti e i ruoli loro assegnati.

  • La cartella lib contiene i vari file JAR necessari per il corretto funzionamento di Tomcat.

  • Le cartelle logs e temp memorizzano file di log temporanei.

  • La cartella webapps è la root web predefinita di Tomcat e ospita tutte le applicazioni. La cartella work funge da cache ed è utilizzata per memorizzare dati durante l'esecuzione.

Ci si aspetta che ciascuna cartella all'interno di webapps abbia la seguente struttura.

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

Il file più importante tra questi è WEB-INF/web.xml, noto come descrittore di distribuzione. Questo file memorizza informazioni sulle route utilizzate dall'applicazione e sulle classi che gestiscono tali route. Tutte le classi compilare utilizzate dall'applicazione dovrebbero essere memorizzate nella cartella WEB-INF/classes. Queste classi potrebbero contenere logiche aziendali importanti e informazioni sensibili. Qualsiasi vulnerabilità in questi file può portare al compromesso totale del sito web. La cartella lib memorizza le librerie necessarie per quell'applicazione specifica. La cartella jsp memorizza le Jakarta Server Pages (JSP), precedentemente conosciute come JavaServer Pages, che possono essere paragonate ai file PHP su un server Apache.

Ecco un esempio di file 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>

Il file di configurazione web.xml sopra definisce un nuovo servlet chiamato AdminServlet che è mappato alla classe com.inlanefreight.api.AdminServlet. Java utilizza la notazione a punti per creare i nomi dei pacchetti, il che significa che il percorso su disco per la classe definita sopra sarebbe:

  • classes/com/inlanefreight/api/AdminServlet.class

Successivamente, viene creato un nuovo mapping del servlet per mappare le richieste a /admin con AdminServlet. Questa configurazione invierà qualsiasi richiesta ricevuta per /admin alla classe AdminServlet.class per l'elaborazione. Il descrittore web.xml contiene molte informazioni sensibili ed è un file importante da controllare quando si sfrutta una vulnerabilità di Inclusione di File Locale (LFI).

tomcat-users

Il file tomcat-users.xml viene utilizzato per consentire o impedire l'accesso alle pagine di amministrazione /manager e 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>

Il file ci mostra a cosa forniscono accesso i ruoli manager-gui, manager-script, manager-jmx e manager-status. In questo esempio, possiamo vedere che un utente tomcat con la password tomcat ha il ruolo manager-gui, e una seconda password debole admin è impostata per l'account utente admin

Riferimenti

Try Hard Security Group

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Last updated