Basic Tomcat Info

Support HackTricks

Vermy om met root te loop

Om te verhoed dat Tomcat met root loop, is 'n baie algemene konfigurasie om 'n Apache-bediener op poort 80/443 in te stel en, as die versoekte pad 'n regexp ooreenstem, word die versoek na Tomcat gestuur wat op 'n ander poort loop.

Standaard Struktuur

├── 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
  • Die bin gids stoor skripte en binaire lêers wat nodig is om 'n Tomcat-bediener te begin en te laat loop.

  • Die conf gids stoor verskeie konfigurasielêers wat deur Tomcat gebruik word.

  • Die tomcat-users.xml lêer stoor gebruikersakkrediteer en hul toegewezen rolle.

  • Die lib gids hou die verskillende JAR-lêers wat nodig is vir die korrekte werking van Tomcat.

  • Die logs en temp gidse stoor tydelike loglêers.

  • Die webapps gids is die standaard webroot van Tomcat en huisves al die toepassings. Die work gids dien as 'n kas en word gebruik om data tydens uitvoering te stoor.

Elke gids binne webapps word verwag om die volgende struktuur te hê.

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

Die belangrikste lêer onder hierdie is WEB-INF/web.xml, wat bekend staan as die ontplooiingsbeskrywer. Hierdie lêer stoor inligting oor die roetes wat deur die aansoek gebruik word en die klasse wat hierdie roetes hanteer. Alle gecompileerde klasse wat deur die aansoek gebruik word, moet in die WEB-INF/classes gids gestoor word. Hierdie klasse kan belangrike besigheidslogika sowel as sensitiewe inligting bevat. Enige kwesbaarheid in hierdie lêers kan lei tot totale kompromie van die webwerf. Die lib gids stoor die biblioteke wat deur daardie spesifieke aansoek benodig word. Die jsp gids stoor Jakarta Server Pages (JSP), voorheen bekend as JavaServer Pages, wat vergelyk kan word met PHP-lêers op 'n Apache-bediener.

Hier is 'n voorbeeld web.xml lêer.

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

Die web.xml konfigurasie hierbo definieer 'n nuwe servlet genaamd AdminServlet wat gemap is na die klas com.inlanefreight.api.AdminServlet. Java gebruik die puntnotasie om pakkette te skep, wat beteken die pad op skyf vir die klas hierbo gedefinieer sou wees:

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

Volgende word 'n nuwe servlet-mapping geskep om versoeke na /admin met AdminServlet te map. Hierdie konfigurasie sal enige versoek wat ontvang word vir /admin na die AdminServlet.class klas vir verwerking stuur. Die web.xml beskrywer hou 'n groot hoeveelheid sensitiewe inligting en is 'n belangrike lêer om te kontroleer wanneer 'n Local File Inclusion (LFI) kwetsbaarheid benut word.

tomcat-users

Die tomcat-users.xml lêer word gebruik om toegang toe te laat of te weier tot die /manager en host-manager admin bladsye.

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

Die lêer wys vir ons wat elkeen van die rolle manager-gui, manager-script, manager-jmx, en manager-status toegang bied. In hierdie voorbeeld kan ons sien dat 'n gebruiker tomcat met die wagwoord tomcat die manager-gui rol het, en 'n tweede swak wagwoord admin is gestel vir die gebruikersrekening admin

Verwysings

Ondersteun HackTricks

Last updated