Basic Tomcat Info

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Try Hard Security Group


Vermy om met root te hardloop

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

Standaardstruktuur

├── 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-vouer stoor skripte en bineêre lêers wat nodig is om 'n Tomcat-bediener te begin en te hardloop.

  • Die conf-vouer stoor verskeie opsetlêers wat deur Tomcat gebruik word.

  • Die tomcat-users.xml-lêer stoor gebruikerlegitimasie en hul toegewysde rolle.

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

  • Die logs- en temp-vouers stoor tydelike loglêers.

  • Die webapps-vouer is die verstek webroot van Tomcat en bied al die toepassings aan. Die work-vouer tree op as 'n cache en word gebruik om data tydens uitvoering te stoor.

Elke vouer 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 implementeringsbeskrywing. Hierdie lêer stoor inligting oor die roetes wat deur die aansoek gebruik word en die klasse wat hierdie roetes hanteer. Alle gekompileerde klasse wat deur die aansoek gebruik word, moet in die WEB-INF/classes-vouer gestoor word. Hierdie klasse kan belangrike besigheidslogika sowel as sensitiewe inligting bevat. Enige kwesbaarheid in hierdie lêers kan lei tot totale kompromittering van die webwerf. Die lib-vouer stoor die biblioteke wat deur daardie spesifieke aansoek benodig word. Die jsp-vouer stoor Jakarta Server Pages (JSP), vroeër bekend as JavaServer Pages, wat vergelyk kan word met PHP-lêers op 'n Apache-bediener.

Hier is 'n voorbeeld van 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 gekoppel is aan die klas com.inlanefreight.api.AdminServlet. Java gebruik die puntnotasie om pakkette te skep, wat beteken dat die pad op die skyf vir die bogenoemde klas sou wees:

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

Daarna word 'n nuwe servlet-kartering geskep om versoeke na /admin met AdminServlet te karteer. Hierdie konfigurasie sal enige versoek wat ontvang word vir **/admin na die AdminServlet.class-klas stuur vir verwerking. Die web.xml-beskrywing bevat baie sensitiewe inligting en is 'n belangrike lêer om te kontroleer wanneer 'n Plaaslike Lêer Insleep (LFI) kwesbaarheid benut word.

tomcat-gebruikers

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

<?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 ons wat elkeen van die rolle manager-gui, manager-script, manager-jmx, en manager-status toegang tot 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 ingestel vir die gebruikersrekening admin

Verwysings

Probeer Hard Security Groep

Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Last updated