Basic Tomcat Info

Podržite HackTricks

Izbegavajte pokretanje sa root-om

Da ne biste pokretali Tomcat sa root-om, veoma uobičajena konfiguracija je postavljanje Apache servera na portu 80/443 i, ako putanja zahteva odgovara regexp-u, zahtev se šalje Tomcat-u koji radi na drugom portu.

Podrazumevana struktura

├── 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
  • Folder bin čuva skripte i binarne datoteke potrebne za pokretanje i rad Tomcat servera.

  • Folder conf čuva razne konfiguracione datoteke koje koristi Tomcat.

  • Datoteka tomcat-users.xml čuva korisničke akreditive i njihove dodeljene uloge.

  • Folder lib sadrži razne JAR datoteke potrebne za ispravno funkcionisanje Tomcat-a.

  • Folderi logs i temp čuvaju privremene log datoteke.

  • Folder webapps je podrazumevani webroot Tomcat-a i hostuje sve aplikacije. Folder work deluje kao keš i koristi se za čuvanje podataka tokom izvršavanja.

Svaki folder unutar webapps se očekuje da ima sledeću strukturu.

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

Najvažnija datoteka među ovim je WEB-INF/web.xml, koja je poznata kao deskriptor implementacije. Ova datoteka čuva informacije o rutama koje koristi aplikacija i klase koje obrađuju te rute. Sve kompajlirane klase koje koristi aplikacija treba da budu smeštene u WEB-INF/classes folderu. Ove klase mogu sadržati važnu poslovnu logiku kao i osetljive informacije. Svaka ranjivost u ovim datotekama može dovesti do potpunog kompromitovanja veb sajta. Folder lib čuva biblioteke potrebne toj konkretnoj aplikaciji. Folder jsp čuva Jakarta Server Pages (JSP), ranije poznate kao JavaServer Pages, koje se mogu uporediti sa PHP datotekama na Apache serveru.

Evo primera web.xml datoteke.

<?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>

The web.xml конфигурација изнад дефинише нови сервлет под именом AdminServlet који је мапиран на класу com.inlanefreight.api.AdminServlet. Java користи тачкасту нотацију за креирање имена пакета, што значи да би пут на диску за класу дефинисану изнад био:

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

Следеће, нова мапа сервлета се креира да мапира захтеве на /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>

Fajl nam pokazuje šta svaka od uloga manager-gui, manager-script, manager-jmx i manager-status omogućava. U ovom primeru, možemo videti da korisnik tomcat sa lozinkom tomcat ima ulogu manager-gui, a druga slaba lozinka admin je postavljena za korisnički nalog admin.

Reference

Support HackTricks

Last updated