Basic Tomcat Info

Sıfırdan kahraman olmak için AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

Try Hard Güvenlik Grubu


Root ile Çalıştırmaktan Kaçının

Tomcat'ı root olarak çalıştırmamak için çok yaygın bir yapılandırma, 80/443 portlarında bir Apache sunucusu ayarlamak ve istenen yol bir regex ile eşleşirse, istek farklı bir portta çalışan Tomcat'a gönderilir.

Varsayılan Yapı

├── 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 klasörü, bir Tomcat sunucusunu başlatmak ve çalıştırmak için gereken betikleri ve ikili dosyaları depolar.

  • conf klasörü, Tomcat tarafından kullanılan çeşitli yapılandırma dosyalarını depolar.

  • tomcat-users.xml dosyası, kullanıcı kimlik bilgilerini ve atanan rolleri depolar.

  • lib klasörü, Tomcat'ın doğru şekilde çalışabilmesi için gereken çeşitli JAR dosyalarını içerir.

  • logs ve temp klasörleri geçici günlük dosyalarını depolar.

  • webapps klasörü, Tomcat'ın varsayılan web kök dizinidir ve tüm uygulamaları barındırır. work klasörü bir önbellek olarak işlev görür ve çalışma zamanında verileri depolamak için kullanılır.

webapps içindeki her klasörün aşağıdaki yapıya sahip olması beklenir.

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

En önemli dosya WEB-INF/web.xml dosyasıdır, bu da dağıtım tanımlayıcısı olarak bilinir. Bu dosya, uygulama tarafından kullanılan rotalar ve bu rotaları işleyen sınıflar hakkında bilgileri depolar. Uygulama tarafından kullanılan tüm derlenmiş sınıflar WEB-INF/classes klasöründe saklanmalıdır. Bu sınıflar önemli iş mantığı yanı sıra hassas bilgiler içerebilir. Bu dosyalardaki herhangi bir güvenlik açığı, web sitesinin tamamen tehlikeye girmesine neden olabilir. lib klasörü, belirli uygulama için gerekli olan kütüphaneleri depolar. jsp klasörü, Jakarta Server Pages (JSP) olarak bilinen, önceden JavaServer Pages olarak bilinen dosyaları saklar ve Apache sunucusundaki PHP dosyalarına benzetilebilir.

İşte bir web.xml dosyası örneği.

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

Yukarıdaki web.xml yapılandırması, AdminServlet adında yeni bir servlet tanımlar ve com.inlanefreight.api.AdminServlet sınıfına eşlenir. Java, paket adları oluşturmak için nokta notasyonunu kullanır, yukarıda tanımlanan sınıfın disk üzerindeki yolu şöyle olacaktır:

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

Daha sonra, /admin isteklerini AdminServlet ile eşlemek için yeni bir servlet eşlemesi oluşturulur. Bu yapılandırma, /admin için alınan herhangi bir isteği işlemek için AdminServlet.class sınıfına yönlendirecektir. web.xml açıklaması, bir Yerel Dosya Dahil Etme (LFI) zafiyetinden yararlanırken kontrol edilmesi gereken önemli bir dosyadır.

tomcat-users

tomcat-users.xml dosyası, /manager ve host-manager yönetici sayfalarına erişimi izin vermek veya engellemek için kullanılır.

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

Dosya, manager-gui, manager-script, manager-jmx ve manager-status rollerinin her birinin erişim sağladığı şeyleri göstermektedir. Bu örnekte, tomcat kullanıcısının şifresi tomcat olan manager-gui rolüne sahip olduğunu ve admin kullanıcı hesabı için ikinci zayıf bir şifre olan adminin ayarlandığını görebiliriz.

Referanslar

Try Hard Security Group

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

Last updated