GCP - Privilege Escalation

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

GCP Ayrıcalık Yükseltmeye Giriş

GCP, diğer herhangi bir bulut gibi, bazı ilkeleri içerir: kullanıcılar, gruplar ve hizmet hesapları ve bazı kaynaklar gibi hesaplama motoru, bulut işlevleri... Sonra, roller aracılığıyla, bu ilkelerin kaynaklar üzerindeki izinleri verilir. Bu, GCP'deki bir kaynak üzerinde bir ilkeye sahip olan izinleri belirtmenin yoludur. Bazı izinler, bir kullanıcının kaynak veya üçüncü taraf kaynaklar üzerinde daha fazla izin almasına izin verecektir ve bu, ayrıcalık yükseltme olarak adlandırılır (ayrıca, daha fazla izin almak için zafiyetleri sömürme).

Bu nedenle, GCP ayrıcalık yükseltme tekniklerini 2 gruba ayırmak istiyorum:

  • Bir ilkeye ayrıcalık yükseltme: Bu, başka bir ilkeyi taklit etmenize izin verecektir ve bu nedenle tüm izinleriyle onun gibi davranmanıza olanak sağlar. Örneğin: Bir hizmet hesabını taklit etmek için getAccessToken kötüye kullanımı.

  • Kaynak üzerinde ayrıcalık yükseltme: Bu, belirli bir kaynak üzerinde daha fazla izin almanıza izin verecektir. Örneğin: bir işlevi tetiklemenize izin vermek için cloudfunctions üzerinde setIamPolicy iznini kötüye kullanabilirsiniz.

  • Bazı kaynak izinleri ayrıca bir hizmet hesabını kaynağa bağlamanıza izin verecektir. Bu, bir SA ile bir kaynağı başlatabileceğiniz, kaynağa girebileceğiniz ve SA belirtecinin çalınmasına izin vereceğiniz anlamına gelir. Bu nedenle, bir kaynak yükseltmesi aracılığıyla bir ilkeye ayrıcalık yükseltme yapmanıza izin verecektir. Bu daha önce birkaç kaynakta yaşandı, ancak şimdi daha az sıklıkta oluyor (ancak hala olabilir).

Açıkçası, en ilginç ayrıcalık yükseltme teknikleri, ikinci gruptaki tekniklerdir çünkü zaten bazı ayrıcalıklara sahip olduğunuz kaynakların dışında daha fazla ayrıcalık elde etmenizi sağlar. Bununla birlikte, kaynaklarda yükseltme yapmak, aynı zamanda hassas bilgilere veya hatta diğer ilkelere (belki bir SA belirteci içeren bir gizliyi okuyarak) erişim sağlayabilir.

Ayrıca, GCP Hizmet Hesapları hem ilke hem de izinlerdir, bu nedenle bir SA'da ayrıcalıkları yükseltmek, onu taklit etmenize de izin verecektir.

Parantez içindeki izinler, gcloud ile zafiyetin sömürülmesi için gereken izinleri gösterir. Bunlar, API aracılığıyla sömürülüyorsa gerekli olmayabilir.

Ayrıcalık Yükseltme Metodolojisi için İzinler

Belirli eylemleri gerçekleştirmek için belirli izinleri test etmek için aşağıdaki adımları izleyin.

  1. Github deposunu https://github.com/carlospolop/gcp_privesc_scripts adresinden indirin.

  2. tests/ klasörüne yeni betiği ekleyin

Erişim kapsamlarını atlatma

GCP meta veri servisinden sızdırılan SA belirteçleri erişim kapsamlarına sahiptir. Bunlar, belirli belirtecin sahip olduğu izinler üzerindeki kısıtlamalardır. Örneğin, belirtecin https://www.googleapis.com/auth/cloud-platform kapsamı varsa, tüm GCP hizmetlerine tam erişimi olacaktır. Bununla birlikte, belirtecin https://www.googleapis.com/auth/cloud-platform.read-only kapsamı varsa, yalnızca IAM'de SA'nın daha fazla izne sahip olsa bile tüm GCP hizmetlerine salt okunur erişimi olacaktır.

Bu izinleri atlamak için doğrudan bir yol yoktur, ancak her zaman kompromize edilmiş ana makinede yeni kimlik bilgileri arayabilir, kısıtlama olmadan bir OAuth belirteci oluşturmak için hizmet anahtarını bulabilir veya daha az kısıtlı bir SA'ya sahip farklı bir sanal makineye geçebilirsiniz.

Erişim kapsamları kullanıldığında, hesaplama örneği (VM) için oluşturulan OAuth belirteci, kapsam sınırlamasını içeren bir kapsam kısıtlamasına sahip olacaktır. Bununla birlikte, kompromize edilen hesabın sahip olduğu izinleri sömürmek ve bu kısıtlamayı atlamak mümkün olabilir.

Bu kısıtlamayı atlamak için en iyi yol, ya kompromize edilmiş ana makinede yeni kimlik bilgileri bulmak, kısıtlama olmadan bir OAuth belirteci oluşturmak için hizmet anahtarını bulmak veya daha az kısıtlı bir SA'ya sahip farklı bir sanal makineyi ele geçirmektir.

Anahtarları oluşturulan SA'yı 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ı/kullanıcılar/gruplarının yetkilerine bir şekilde erişebilecek kadar yeterli izne sahip olmaktır. Yetkilendirme zincirlemesi yaparak, organizasyon üzerinde yönetici erişimi elde edene kadar yetkileri yükseltmek.

GCP'de bir varlık binlerce (belki de binlerce) izin alabilir. Bu kitapta, yetkileri yükseltmek için kullanabileceğiniz tüm izinleri bulabilirsiniz, ancak burada bahsedilmeyen başka bir yol biliyorsanız, lütfen paylaşın.

Bu bölümün alt sayfaları hizmetlere göre sıralanmıştır. Her hizmette yetkileri yükseltmenin farklı yollarını bulabilirsiniz.

Yetkileri yerel olarak yükseltmek için GCP'yi kötüye kullanma

GCP'deki bir makinedeyseniz, yerel olarak bile yetkileri yükseltmek için izinleri kötüye kullanabilirsiniz:

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated