GCP Pentesting

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

HackTricks'ı desteklemenin diğer yolları:

Temel Bilgiler

GCP ortamını pentest etmeye başlamadan önce, ne yapmanız gerektiğini, yanlış yapılandırmaları nasıl bulacağınızı ve nasıl sömüreceğinizi anlamanıza yardımcı olacak birkaç temel bilgiye ihtiyacınız vardır.

Organizasyon hiyerarşisi, izinler ve diğer temel kavramlar şu adreste açıklanmıştır:

pageGCP - Basic Information

Öğrenmek için Lablar

GCP Pentester/Kırmızı Takım Metodolojisi

Bir GCP ortamını denetlemek için çok önemli olan şeyler: hangi hizmetlerin kullanıldığı, neyin açığa çıkarıldığı, kimin neye erişimi olduğu ve iç GCP hizmetlerinin harici hizmetlerle nasıl bağlantılı olduğudur.

Kırmızı Takım açısından, bir GCP ortamını ele geçirmenin ilk adımı, bazı kimlik bilgilerini elde etmeyi başarmaktır. İşte bunu nasıl yapabileceğinize dair bazı fikirler:

  • Github (veya benzeri) sızıntıları - OSINT

  • Sosyal Mühendislik (Sayfayı kontrol edin Workspace Güvenliği)

  • Şifre yeniden kullanımı (şifre sızıntıları)

  • GCP'de barındırılan Uygulamalardaki Zayıflıklar

  • Sunucu Tarafı İstek Sahteciliği (SSRF) - meta veri uç noktasına erişimle

  • Yerel Dosya Okuma

  • /home/USERNAME/.config/gcloud/*

  • C:\Users\USERNAME\.config\gcloud\*

    1. tarafların ihlal edilmesi

  • İç Çalışan

Veya kimlik doğrulaması yapılmamış bir hizmeti ele geçirerek:

pageGCP - Unauthenticated Enum & Access

Veya bir inceleme yapıyorsanız, bu rollerle kimlik bilgilerini talep edebilirsiniz:

pageGCP - Permissions for a Pentest

Kimlik bilgilerini elde etmeyi başardıktan sonra, bu kimlik bilgilerinin kime ait olduğunu ve neye erişimi olduğunu bilmek için bazı temel numaralandırmalar yapmanız gerekmektedir:

Temel Numaralandırma

SSRF

GCP meta verilerini nasıl numaralandıracağınız hakkında daha fazla bilgi için aşağıdaki hacktricks sayfasına bakın:

Ben Kimim

GCP'de kim olduğunuzu tahmin etmek için birkaç seçenek deneyebilirsiniz:

#If you are inside a compromise machine
gcloud auth list
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=$(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/tokeninfo
gcloud auth print-identity-token #Get info from the token

#If you compromised a metadata token or somehow found an OAuth token
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=<token>" https://www.googleapis.com/oauth2/v1/tokeninfo

Org Saptama

Bu bölümde, hedef GCP (Google Cloud Platform) örgütünü saptamak için kullanılan teknikler açıklanmaktadır. Bu bilgiler, bir saldırganın hedef örgüt hakkında bilgi toplamasına ve saldırı vektörlerini belirlemesine yardımcı olabilir.

1. Google Cloud Resource Manager API Kullanarak Örgüt ID'sini Almak

Bu API, GCP örgütlerini yönetmek için kullanılır. Bir saldırgan, bu API'yi kullanarak hedef örgütün ID'sini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations

2. Google Cloud Directory API Kullanarak Örgütün Kullanıcılarını ve Gruplarını Almak

Bu API, G Suite kullanıcılarını ve gruplarını yönetmek için kullanılır. Bir saldırgan, bu API'yi kullanarak hedef örgütün kullanıcılarını ve gruplarını elde edebilir.

GET https://admin.googleapis.com/admin/directory/v1/users
GET https://admin.googleapis.com/admin/directory/v1/groups

3. Google Cloud Asset API Kullanarak Örgütün Varlıklarını Almak

Bu API, GCP varlıklarını yönetmek için kullanılır. Bir saldırgan, bu API'yi kullanarak hedef örgütün varlıklarını elde edebilir.

GET https://cloudasset.googleapis.com/v1beta1/organizations/{ORG_ID}/assets

4. Google Cloud Identity and Access Management (IAM) API Kullanarak Örgütün IAM Politikalarını Almak

Bu API, GCP örgütlerinin IAM politikalarını yönetmek için kullanılır. Bir saldırgan, bu API'yi kullanarak hedef örgütün IAM politikalarını elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/iamPolicy

5. Google Cloud Security Command Center (SCC) Kullanarak Örgütün Güvenlik Durumunu Almak

Bu hizmet, GCP örgütlerinin güvenlik durumunu izlemek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün güvenlik durumunu elde edebilir.

GET https://securitycenter.googleapis.com/v1/organizations/{ORG_ID}/assets

6. Google Cloud Asset Inventory Kullanarak Örgütün Varlık Envanterini Almak

Bu hizmet, GCP örgütlerinin varlık envanterini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün varlık envanterini elde edebilir.

GET https://cloudasset.googleapis.com/v1/organizations/{ORG_ID}/assets

7. Google Cloud Resource Manager Kullanarak Örgütün Alt Projelerini Almak

Bu hizmet, GCP örgütlerinin alt projelerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün alt projelerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/projects

8. Google Cloud Resource Manager Kullanarak Örgütün Politikalarını Almak

Bu hizmet, GCP örgütlerinin politikalarını yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün politikalarını elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/policies

9. Google Cloud Resource Manager Kullanarak Örgütün Hizmetlerini Almak

Bu hizmet, GCP örgütlerinin hizmetlerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün hizmetlerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/services

10. Google Cloud Resource Manager Kullanarak Örgütün Faturalandırma Bilgilerini Almak

Bu hizmet, GCP örgütlerinin faturalandırma bilgilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün faturalandırma bilgilerini elde edebilir.

GET https://cloudbilling.googleapis.com/v1/organizations/{ORG_ID}/billingAccount

11. Google Cloud Resource Manager Kullanarak Örgütün İzinlerini Almak

Bu hizmet, GCP örgütlerinin izinlerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün izinlerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/permissions

12. Google Cloud Resource Manager Kullanarak Örgütün Kullanıcılarını Almak

Bu hizmet, GCP örgütlerinin kullanıcılarını yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün kullanıcılarını elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/users

13. Google Cloud Resource Manager Kullanarak Örgütün Gruplarını Almak

Bu hizmet, GCP örgütlerinin gruplarını yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün gruplarını elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/groups

14. Google Cloud Resource Manager Kullanarak Örgütün Rollerini Almak

Bu hizmet, GCP örgütlerinin rollerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün rollerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/roles

15. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

16. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

17. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

18. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

19. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

20. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

21. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

22. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

23. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

24. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

25. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

26. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

27. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

28. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

29. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships

30. Google Cloud Resource Manager Kullanarak Örgütün İş İlişkilerini Almak

Bu hizmet, GCP örgütlerinin iş ilişkilerini yönetmek için kullanılır. Bir saldırgan, bu hizmeti kullanarak hedef örgütün iş ilişkilerini elde edebilir.

GET https://cloudresourcemanager.googleapis.com/v1/organizations/{ORG_ID}/relationships
# Get organizations
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud resource-manager folders list --organization <org_number> # Get folders
gcloud projects list # Get projects

İlkeler ve IAM Numaralandırma

Yeterli izinlere sahipseniz, GCP hesabındaki her bir varlık için ayrıcalıklarını kontrol etmek, ne yapabileceğinizi ve diğer kimliklerin nasıl ayrıcalıklarını yükseltebileceğinizi anlamanıza yardımcı olacaktır.

IAM'ı numaralandırmak için yeterli izniniz yoksa, onları anlamak için kaba kuvvet uygulayabilirsiniz. Numaralandırmayı ve kaba kuvvet uygulamayı nasıl yapacağınızı kontrol edin:

pageGCP - IAM, Principals & Org Policies Enum

Şimdi kimlik bilgileriniz hakkında bazı bilgilere sahip olduğunuzda (ve eğer bir kırmızı takım üyesiyseniz umarım tespit edilmediniz). Ortamda hangi hizmetlerin kullanıldığını anlamak için zamanı geldi. Aşağıdaki bölümde, bazı yaygın hizmetlerin numaralandırılması için bazı yöntemleri kontrol edebilirsiniz.

Hizmetlerin Numaralandırılması

GCP'nin inanılmaz miktarda hizmeti vardır, aşağıdaki sayfada bazılarının temel bilgilerini, numaralandırma hilelerini, tespit edilmeyi önleme yöntemlerini, kalıcılık sağlama yöntemlerini ve diğer saldırı sonrası hileleri bulabilirsiniz:

pageGCP - Services

Tüm işi manuel olarak yapmanıza gerek yoktur, bu gönderinin altında otomatik araçlar hakkında bir bölüm bulabilirsiniz.

Ayrıca, bu aşamada kimlik doğrulaması yapılmamış kullanıcılara daha fazla hizmetin açığa çıktığını keşfedebilirsiniz, bunları sömürebilirsiniz:

pageGCP - Unauthenticated Enum & Access

Ayrıcalık Yükseltme, Saldırı Sonrası ve Kalıcılık

Bir bulut kimlik bilgisi elde ettiğinizde veya bir bulutta çalışan bir hizmeti ele geçirdiğinizde, en yaygın yöntem, ele geçirilen hesabın sahip olabileceği yanlış yapılandırılmış ayrıcalıkları kötüye kullanmaktır. Bu nedenle, yapmanız gereken ilk şey ayrıcalıklarınızı numaralandırmaktır.

Ayrıca, bu numaralandırma sırasında, izinlerin en üst düzeyde "Organizasyon" seviyesinde ayarlanabileceğini unutmayın.

pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - Persistence

Kamuya Açık Hizmetler

GCP hizmetlerini numaralandırırken, bazılarının İnternet'e (VM/Container bağlantı noktaları, veritabanları veya kuyruk hizmetleri, anlık görüntüler veya kovalar...) öğeleri açığa çıkardığını fark etmiş olabilirsiniz. Bir pentester/red teamer olarak, AWS hesabına daha fazla erişim sağlayabilecek hassas bilgileri / zafiyetleri bulup bulamayacağınızı her zaman kontrol etmelisiniz.

Bu kitapta, açığa çıkarılmış GCP hizmetlerini nasıl bulacağınızı ve kontrol edeceğinizi bulabilirsiniz. Açığa çıkarılmış ağ hizmetlerinde zafiyetleri nasıl bulacağınız hakkında ise, özel hizmet için aşağıdaki arama yapmanızı öneririm:

GCP <--> Workspace Geçişi

Bir platformdaki varlıkları ele geçirmek, bir saldırganın diğerini ele geçirmesine izin verebilir, bunu kontrol edin:

pageGCP <--> Workspace Pivoting

Otomatik Araçlar

# Install
git clone https://github.com/google/gcp_scanner.git
cd gcp_scanner
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
# Execute with gcloud creds
python3 __main__.py -o /tmp/output/ -g "$HOME/.config/gcloud"
  • gcp_enum: GCP ortamını gcloud cli kullanarak sıralayan ve sonuçları bir dosyada kaydeden bir Bash betiği.

  • GCP-IAM-Privilege-Escalation: Yüksek IAM ayrıcalıklarını sıralamak ve bunları kötüye kullanarak GCP'de ayrıcalıkları yükseltmek için betikler (sıralama betiğini çalıştıramadım).

gcloud yapılandırması ve hata ayıklama

# Login so gcloud can use your credentials
gcloud auth login
gcloud config set project security-devbox
gcloud auth print-access-token

# Login so SDKs can use your user credentials
gcloud auth application-default login
gcloud auth application-default set-quota-project security-devbox
gcloud auth application-default print-access-token

# Update gcloud
gcloud components update

gcloud, gsutil... ağını yakalama

gcloud komut satırı aracını kullanarak --log-http parametresini kullanabilirsiniz. Bu parametre ile aracın gerçekleştirdiği istekleri yazdırabilirsiniz. Eğer logların belirteç değerini sansürlemesini istemiyorsanız gcloud config set log_http_redact_token false komutunu kullanabilirsiniz.

Ayrıca, iletişimi dinlemek için:

gcloud config set proxy/address 127.0.0.1
gcloud config set proxy/port 8080
gcloud config set proxy/type http
gcloud config set auth/disable_ssl_validation True

# If you don't want to completely disable ssl_validation use:
gcloud config set core/custom_ca_certs_file cert.pem

# Back to normal
gcloud config unset proxy/address
gcloud config unset proxy/port
gcloud config unset proxy/type
gcloud config unset auth/disable_ssl_validation
gcloud config unset core/custom_ca_certs_file

gcloud'da OAuth belirteci yapılandırma

Bir hizmet hesabı OAuth belirtecisini metadata uç noktasından çalmak için yapmanız gereken sadece şudur:

# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
gcloud projects list

# Via setup
echo "<token>" > /some/path/to/token
gcloud config set auth/access_token_file /some/path/to/token
gcloud projects list
gcloud config unset auth/access_token_file

Referanslar

AWS hackleme konusunda sıfırdan kahraman olmak için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)'ı öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated