hacktricks/network-services-pentesting/pentesting-web/tomcat/basic-tomcat-info.md

8.7 KiB
Raw Blame History

Temel Tomcat Bilgisi

{% hint style="success" %} AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)

HackTricks'i Destekleyin
{% endhint %}

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}


Root ile çalışmaktan kaçının

Tomcat'i root ile çalıştırmamak için çok yaygın bir yapılandırma, port 80/443'te bir Apache sunucusu ayarlamak ve eğer istenen yol bir regexp ile eşleşiyorsa, isteğin farklı bir portta çalışan Tomcat'e gönderilmesidir.

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ı saklar.
  • conf klasörü, Tomcat tarafından kullanılan çeşitli yapılandırma dosyalarını saklar.
  • tomcat-users.xml dosyası, kullanıcı kimlik bilgilerini ve atanan rollerini saklar.
  • lib klasörü, Tomcat'in doğru çalışması için gereken çeşitli JAR dosyalarını barındırır.
  • logs ve temp klasörleri, geçici günlük dosyalarını saklar.
  • webapps klasörü, Tomcat'in varsayılan web köküdür ve tüm uygulamaları barındırır. work klasörü bir önbellek görevi görür ve çalışma zamanı sırasında verileri saklamak 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 olup, dağıtım tanımlayıcısı olarak bilinir. Bu dosya, uygulama tarafından kullanılan yollar hakkında bilgi ve bu yolları yöneten sınıfları saklar.
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ığı ve hassas bilgiler içerebilir. Bu dosyalardaki herhangi bir zafiyet, web sitesinin tamamen tehlikeye girmesine yol açabilir. lib klasörü, o belirli uygulama için gereken kütüphaneleri saklar. jsp klasörü, Jakarta Server Pages (JSP) olarak bilinen, daha önce JavaServer Pages olarak adlandırılan dosyaları saklar; bu dosyalar, bir Apache sunucusundaki PHP dosyalarıyla karşılaştırılabilir.

İşte bir örnek web.xml dosyası.

<?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ı, com.inlanefreight.api.AdminServlet sınıfına eşlenen yeni bir servlet olan AdminServlet tanımlar. Java, paket adları oluşturmak için nokta notasyonunu kullanır, bu da yukarıda tanımlanan sınıfın disk üzerindeki yolunun:

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

olacağı anlamına gelir.

Sonra, AdminServlet ile /admin isteklerini 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şlenmesi için AdminServlet.class sınıfına gönderecektir. web.xml tanımlayıcısı birçok hassas bilgi içerir ve Yerel Dosya Dahil Etme (LFI) zafiyetini kullanı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 izin vermemek 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 neye erişim sağladığını gösteriyor. Bu örnekte, tomcat kullanıcı adı ve tomcat şifresi olan bir kullanıcının manager-gui rolüne sahip olduğunu ve admin kullanıcı hesabı için ikinci bir zayıf şifre olan admin belirlendiğini görebiliriz.

Referanslar

Try Hard Security Group

{% embed url="https://discord.gg/tryhardsecurity" %}

{% hint style="success" %} AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin
{% endhint %}