Basic Tomcat Info

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Try Hard Security Group


Izbegavajte pokretanje sa root privilegijama

Kako ne biste pokretali Tomcat sa root privilegijama, veoma česta konfiguracija je postavljanje Apache servera na portu 80/443 i, ako tražena putanja odgovara regularnom izrazu, 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
  • bin folder čuva skripte i binarne datoteke potrebne za pokretanje i rad Tomcat servera.

  • conf folder čuva različite konfiguracione datoteke koje koristi Tomcat.

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

  • lib folder sadrži različite JAR datoteke potrebne za ispravno funkcionisanje Tomcat-a.

  • logs i temp folderi čuvaju privremene log datoteke.

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

Očekuje se da svaki folder unutar webapps 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 njima je WEB-INF/web.xml, poznata kao opisnik implementacije. Ova datoteka čuva informacije o rutama koje koristi aplikacija i klase koje upravljaju tim rutama. Sve kompajlirane klase koje koristi aplikacija treba čuvati u fascikli WEB-INF/classes. Te 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. Fascikla lib čuva biblioteke potrebne toj određenoj aplikaciji. Fascikla 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>

Konfiguracija web.xml gore definiše novi servlet nazvan AdminServlet koji je mapiran na klasu com.inlanefreight.api.AdminServlet. Java koristi tačkastu notaciju za kreiranje imena paketa, što znači da bi putanja na disku za gore navedenu klasu bila:

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

Zatim je kreirano novo mapiranje servleta da mapira zahteve na /admin sa AdminServlet. Ova konfiguracija će poslati svaki zahtev primljen za /admin klasi AdminServlet.class na obradu. Deskriptor web.xml sadrži mnogo osetljivih informacija i važan je fajl za proveru prilikom iskorišćavanja Local File Inclusion (LFI) ranjivosti.

tomcat-users

Fajl tomcat-users.xml se koristi da dozvoli ili zabrani pristup /manager i host-manager admin stranicama.

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

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

Reference

Try Hard Security Group

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Last updated