8.7 KiB
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
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
vetemp
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
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da 🐦 @hacktricks_live'i takip edin.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.