Basic Tomcat Info

Support HackTricks

Evitare di eseguire come root

Per non eseguire Tomcat come root, una configurazione molto comune è impostare un server Apache sulla porta 80/443 e, se il percorso richiesto corrisponde a una regexp, 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 e binari necessari per avviare e far funzionare 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 loro ruoli 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 webroot predefinita di Tomcat e ospita tutte le applicazioni. La cartella work funge da cache e viene utilizzata per memorizzare dati durante l'esecuzione.

Ogni cartella all'interno di webapps è prevista avere 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 il descrittore di distribuzione. Questo file memorizza informazioni sui percorsi utilizzati dall'applicazione e le classi che gestiscono questi percorsi. Tutte le classi compilate utilizzate dall'applicazione dovrebbero essere memorizzate nella cartella WEB-INF/classes. Queste classi potrebbero contenere logica aziendale importante così come informazioni sensibili. Qualsiasi vulnerabilità in questi file può portare a un compromesso totale del sito web. La cartella lib memorizza le librerie necessarie per quella particolare applicazione. La cartella jsp memorizza 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 nomi di 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 Local File Inclusion (LFI).

tomcat-users

Il file tomcat-users.xml è utilizzato per consentire o negare 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 ciascuno dei 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

Support HackTricks

Last updated