GCP - Yetki Yükseltme
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.
GCP Yetki Yükseltmeye Giriş
GCP, diğer bulutlar gibi, bazı prensiplere sahiptir: kullanıcılar, gruplar ve hizmet hesapları, ve bazı kaynaklar gibi hesaplama motoru, bulut fonksiyonları…
Daha sonra, roller aracılığıyla, bu prensiplere kaynaklar üzerinde izinler verilir. Bu, bir prensibin GCP’deki bir kaynak üzerindeki izinlerini belirtmenin yoludur.
Kullanıcının bir kaynak veya üçüncü taraf kaynaklar üzerinde daha fazla izin almasına olanak tanıyan belirli izinler vardır ve buna yetki yükseltme denir (ayrıca, daha fazla izin almak için zafiyetlerin istismar edilmesi).
Bu nedenle, GCP yetki yükseltme tekniklerini 2 gruba ayırmak istiyorum:
- Bir prensibe yetki yükseltme: Bu, sizi başka bir prensibi taklit etmenize olanak tanır ve dolayısıyla onun tüm izinleriyle hareket etmenizi sağlar. Örneğin: Bir hizmet hesabını taklit etmek için getAccessToken istismar etmek.
- Kaynak üzerinde yetki yükseltme: Bu, size belirli bir kaynak üzerinde daha fazla izin almanıza olanak tanır. Örneğin: Bulut fonksiyonları üzerinde setIamPolicy iznini istismar ederek fonksiyonu tetikleme izni alabilirsiniz.
- Bazı kaynak izinlerinin, kaynağa rastgele bir hizmet hesabı eklemenize de izin vereceğini unutmayın. Bu, bir SA ile bir kaynak başlatabileceğiniz, kaynağa girebileceğiniz ve SA token’ını çalabileceğiniz anlamına gelir. Bu, bir kaynak aracılığıyla bir prensibe yükselmeyi sağlar. Daha önce birçok kaynakta bu gerçekleşti, ancak şimdi daha az sıklıkta (ama yine de olabilir).
Açıkça, en ilginç yetki yükseltme teknikleri ikinci gruptaki tekniklerdir çünkü bu, zaten bazı izinlere sahip olduğunuz kaynakların dışındaki daha fazla ayrıcalık elde etmenizi sağlar. Ancak, kaynaklarda yükselmenin size hassas bilgilere veya hatta diğer prensiplere (belki bir SA’nın token’ını içeren bir sırrı okuyarak) erişim verebileceğini unutmayın.
Warning
GCP Hizmet Hesaplarının hem prensipler hem de izinler olduğunu belirtmek önemlidir, bu nedenle bir SA’da yetki yükseltmek, onu da taklit etmenizi sağlar.
Note
Parantez içindeki izinler, zafiyeti
gcloudile istismar etmek için gereken izinleri gösterir. API aracılığıyla istismar ediliyorsa bunlar gerekli olmayabilir.
Yetki Yükseltme Metodolojisi için İzinler
Bu, GCP içinde belirli eylemleri gerçekleştirmek için belirli izinleri test etme şeklimdir.
- Github reposunu indirin https://github.com/carlospolop/gcp_privesc_scripts
- tests/ dizinine yeni scripti ekleyin
Erişim Kapsamlarını Aşma
GCP meta veri hizmetinden sızan SA token’ları erişim kapsamlarına sahiptir. Bunlar, token’ın sahip olduğu izinler üzerinde kısıtlamalardır. Örneğin, token https://www.googleapis.com/auth/cloud-platform kapsamına sahipse, tüm GCP hizmetlerine tam erişim olacaktır. Ancak, token https://www.googleapis.com/auth/cloud-platform.read-only kapsamına sahipse, SA’nın IAM’de daha fazla izni olsa bile, tüm GCP hizmetlerine yalnızca salt okunur erişim olacaktır.
Bu izinleri aşmanın doğrudan bir yolu yoktur, ancak her zaman kompromize edilmiş hostta yeni kimlik bilgileri aramayı, kısıtlama olmadan bir OAuth token’ı oluşturmak için hizmet anahtarını bulmayı veya daha az kısıtlı bir VM’ye atlamayı deneyebilirsiniz.
Access scopes kullanıldığında, hesaplama örneği (VM) için oluşturulan OAuth token’ı bir kapsam kısıtlaması içerir. Ancak, bu kısıtlamayı aşabilir ve kompromize edilmiş hesabın sahip olduğu izinleri istismar edebilirsiniz.
Bu kısıtlamayı aşmanın en iyi yolu, ya kompromize edilmiş hostta yeni kimlik bilgileri bulmak, ya kısıtlama olmadan bir OAuth token’ı oluşturmak için hizmet anahtarını bulmak ya da daha az kısıtlı bir SA ile farklı bir VM’yi ele geçirmek olacaktır.
Anahtarları oluşturulmuş SA ile kontrol edin:
for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do
echo "Looking for keys for $i:"
gcloud iam service-accounts keys list --iam-account $i
done
Yetki Yükseltme Teknikleri
AWS’de yetkilerinizi yükseltmenin yolu, diğer hizmet hesaplarının/kullanıcılarının/gruplarının yetkilerine erişebilecek kadar izinlere sahip olmaktır. Yükseltmeleri zincirleyerek organizasyon üzerinde yönetici erişimi elde edebilirsiniz.
Warning
GCP’nin yüzlerce (binlerce değilse) izin verebileceği bir varlık vardır. Bu kitapta, yetki yükseltmek için kötüye kullanabileceğiniz tüm izinleri bulabilirsiniz, ancak burada belirtilmeyen bir yol biliyorsanız, lütfen paylaşın.
Bu bölümün alt sayfaları hizmetlere göre sıralanmıştır. Her hizmette, hizmetlerde yetki yükseltmenin farklı yollarını bulabilirsiniz.
GCP’yi yerel olarak yetki yükseltmek için kötüye kullanma
Eğer GCP’de bir makinenin içindeyseniz, yerel olarak yetkileri yükseltmek için izinleri kötüye kullanma imkanınız olabilir:
GCP - local privilege escalation ssh pivoting
Referanslar
- https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/
- https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/
- https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/
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

