GCP - IAM, Prensipler & Org Politikaları Enum
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.
Hizmet Hesapları
Hizmet hesabının ne olduğu hakkında bir giriş için kontrol edin:
Sayım
Bir hizmet hesabı her zaman bir projeye aittir:
gcloud iam service-accounts list --project <project>
Kullanıcılar ve Gruplar
GCP’de Kullanıcılar ve Gruplar’ın nasıl çalıştığı hakkında bir giriş için kontrol edin:
Sayım
serviceusage.services.enable ve serviceusage.services.use izinleri ile bir projede hizmetleri etkinleştirmek ve kullanmak mümkündür.
Caution
Varsayılan olarak, Workspace kullanıcılarına Proje Oluşturucu rolü verilir, bu da onlara yeni projeler oluşturma erişimi sağlar. Bir kullanıcı bir proje oluşturduğunda, ona
ownerrolü verilir. Böylece, Workspace’i sayabilmek için projede bu hizmetleri etkinleştirebilir.Ancak, bu API’leri çağırabilmek için Workspace’te yeterli izinlere sahip olmanız gerektiğini unutmayın.
Eğer admin hizmetini etkinleştirebiliyorsanız ve kullanıcınızın workspace’te yeterli ayrıcalıkları varsa, aşağıdaki satırlarla tüm grupları ve kullanıcıları sayabilirsiniz.identity groups desede, grubu olmayan kullanıcıları da döndürür:
# Enable admin
gcloud services enable admin.googleapis.com
gcloud services enable cloudidentity.googleapis.com
# Using admin.googleapis.com
## List all users
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud beta identity groups preview --customer <workspace-id>
# Using cloudidentity.googleapis.com
## List groups of a user (you can list at least the groups you belong to)
gcloud identity groups memberships search-transitive-groups --member-email <email> --labels=cloudidentity.googleapis.com/groups.discussion_forum
## List Group Members (you can list at least the groups you belong to)
gcloud identity groups memberships list --group-email=<email>
### Make it transitive
gcloud identity groups memberships search-transitive-memberships --group-email=<email>
## Get a graph (if you have enough permissions)
gcloud identity groups memberships get-membership-graph --member-email=<email> --labels=cloudidentity.googleapis.com/groups.discussion_forum
Tip
Önceki örneklerde
--labelsparametresi gereklidir, bu nedenle genel bir değer kullanılmıştır (API’yi doğrudan kullanıyorsanız gerekmiyor, PurplePanda burada yaptığı gibi.
Admin hizmeti etkin olsa bile, ele geçirilmiş workspace kullanıcınızın yeterli izinlere sahip olmaması nedeniyle bunları listelemekte hata almanız mümkündür:
.png)
IAM
IAM hakkında temel bilgiler için bunu kontrol edin.
Varsayılan İzinler
belgelere göre: Bir organizasyon kaynağı oluşturulduğunda, alanınızdaki tüm kullanıcılara varsayılan olarak Faturalama Hesabı Oluşturucu ve Proje Oluşturucu rolleri verilir. Bu varsayılan roller, kullanıcılarınızın Google Cloud’u hemen kullanmaya başlamasına olanak tanır, ancak organizasyon kaynağınızın normal işletiminde kullanılmak üzere tasarlanmamıştır.
Bu roller aşağıdaki izinleri verir:
billing.accounts.createveresourcemanager.organizations.getresourcemanager.organizations.getveresourcemanager.projects.create
Ayrıca, bir kullanıcı bir proje oluşturduğunda, belgelere göre otomatik olarak o projenin sahibi olur. Bu nedenle, varsayılan olarak, bir kullanıcı bir proje oluşturabilecek ve üzerinde herhangi bir hizmet çalıştırabilecektir (madenciler? Workspace listeleme? …)
Caution
GCP Organizasyonu’ndaki en yüksek ayrıcalık Organizasyon Yöneticisi rolüdür.
set-iam-policy vs add-iam-policy-binding
Çoğu hizmette, bir kaynak üzerindeki izinleri add-iam-policy-binding veya set-iam-policy yöntemini kullanarak değiştirebileceksiniz. Ana fark, add-iam-policy-binding mevcut IAM politikasına yeni bir rol bağlaması eklerken, set-iam-policy daha önce verilmiş izinleri silip yalnızca komutta belirtilenleri ayarlayacaktır.
Listeleme
# Roles
## List roles
gcloud iam roles list --project $PROJECT_ID # List only custom roles
gcloud iam roles list --filter='etag:AA=='
## Get perms and description of role
gcloud iam roles describe roles/container.admin
gcloud iam roles describe --project <proj-name> <role-name>
# Policies
gcloud organizations get-iam-policy <org_id>
gcloud resource-manager folders get-iam-policy <folder-id>
gcloud projects get-iam-policy <project-id>
# MISC
## Testable permissions in resource
gcloud iam list-testable-permissions --filter "NOT apiDisabled: true" <resource>
## Grantable roles to a resource
gcloud iam list-grantable-roles <project URL>
cloudasset IAM Enumeration
Bu hizmeti kullanarak bir kullanıcının farklı kaynaklardaki (örneğin organizasyonlar, klasörler, projeler…) tüm izinlerini kontrol etmenin farklı yolları vardır.
cloudasset.assets.searchAllIamPoliciesizni, bir kaynağın içindeki tüm iam politikalarını talep edebilir.
gcloud asset search-all-iam-policies #By default uses current configured project
gcloud asset search-all-iam-policies --scope folders/1234567
gcloud asset search-all-iam-policies --scope organizations/123456
gcloud asset search-all-iam-policies --scope projects/project-id-123123
- İzin
cloudasset.assets.analyzeIamPolicybir kaynağın içindeki bir ilkenin tüm iam politikalarını talep edebilir.
# Needs perm "cloudasset.assets.analyzeIamPolicy" over the asset
gcloud asset analyze-iam-policy --organization=<org-id> \
--identity='user:email@hacktricks.xyz'
gcloud asset analyze-iam-policy --folder=<folder-id> \
--identity='user:email@hacktricks.xyz'
gcloud asset analyze-iam-policy --project=<project-name> \
--identity='user:email@hacktricks.xyz'
cloudasset.assets.searchAllResourcesizni, bir organizasyonun, klasörün veya projenin tüm kaynaklarını listelemeye olanak tanır. IAM ile ilgili kaynaklar (roller gibi) dahildir.
gcloud asset search-all-resources --scope projects/<proj-name>
gcloud asset search-all-resources --scope folders/1234567
gcloud asset search-all-resources --scope organizations/123456
cloudasset.assets.analyzeMoveizni, bir proje gibi bir kaynağı etkileyen politikaları almak için de faydalı olabilir.
gcloud asset analyze-move --project=<proj-name> \
--destination-organization=609216679593
- Sanırım
cloudasset.assets.queryIamPolicyizni, ilkelerin izinlerini bulmak için erişim sağlayabilir.
# But, when running something like this
gcloud asset query --project=<proj> --statement='SELECT * FROM compute_googleapis_com_Instance'
# I get the error
ERROR: (gcloud.asset.query) UNAUTHENTICATED: QueryAssets API is only supported for SCC premium customers. See https://cloud.google.com/security-command-center/pricing
testIamPermissions enumeration
Caution
Eğer önceki yöntemleri kullanarak IAM bilgilerine erişemiyorsanız ve bir Kırmızı Takım içindeyseniz. Mevcut izinlerinizi brute-force etmek için https://github.com/carlospolop/bf_my_gcp_perms aracını kullanabilirsiniz.
Ancak,
cloudresourcemanager.googleapis.comhizmetinin etkinleştirilmesi gerektiğini unutmayın.
Privesc
Aşağıdaki sayfada IAM izinlerini kötüye kullanarak ayrıcalıkları artırma yöntemini kontrol edebilirsiniz:
Unauthenticated Enum
GCP - IAM, Principals & Org Unauthenticated Enum
Post Exploitation
Persistence
Eğer yüksek ayrıcalıklarınız varsa şunları yapabilirsiniz:
- Yeni SA’lar (veya Workspace’te kullanıcılar) oluşturun
- Kendiniz tarafından kontrol edilen ilkelere daha fazla izin verin
- Zayıf SA’lara daha fazla ayrıcalık verin (vm’de SSRF, zayıf Cloud Function…)
- …
Org Policies
Org Policies’in ne olduğunu öğrenmek için kontrol edin:
IAM politikaları, ilkelere roller aracılığıyla kaynaklar üzerinde sahip oldukları izinleri belirtir; bu roller ayrıntılı izinler atar. Organizasyon politikaları bu hizmetlerin nasıl kullanılabileceğini veya hangi özelliklerin devre dışı bırakılacağını kısıtlar. Bu, GCP ortamındaki her kaynağın en az ayrıcalığını artırmaya yardımcı olur.
gcloud resource-manager org-policies list --organization=ORGANIZATION_ID
gcloud resource-manager org-policies list --folder=FOLDER_ID
gcloud resource-manager org-policies list --project=PROJECT_ID
Privesc
Aşağıdaki sayfada örgüt politikası izinlerini kötüye kullanarak ayrıcalıkları artırma yöntemini kontrol edebilirsiniz:
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

