GCP - IAM, Principals & Org Policies Enum
Reading time: 9 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
सेवा खाते
सेवा खाते के बारे में जानकारी के लिए देखें:
गणना
एक सेवा खाता हमेशा एक परियोजना से संबंधित होता है:
gcloud iam service-accounts list --project <project>
Users & Groups
GCP में Users & Groups कैसे काम करते हैं, इसके लिए एक परिचय देखें:
Enumeration
serviceusage.services.enable
और serviceusage.services.use
अनुमतियों के साथ, किसी प्रोजेक्ट में सेवाओं को सक्षम करना और उनका उपयोग करना संभव है।
caution
ध्यान दें कि डिफ़ॉल्ट रूप से, Workspace उपयोगकर्ताओं को Project Creator भूमिका दी जाती है, जिससे उन्हें नए प्रोजेक्ट बनाने की अनुमति मिलती है। जब एक उपयोगकर्ता एक प्रोजेक्ट बनाता है, तो उसे उस पर owner
भूमिका दी जाती है। इसलिए, वह Workspace को सूचीबद्ध करने के लिए प्रोजेक्ट पर इन सेवाओं को सक्षम कर सकता है।
हालाँकि, यह भी ध्यान दें कि इन APIs को कॉल करने के लिए Workspace में पर्याप्त अनुमतियाँ होना आवश्यक है।
यदि आप admin
सेवा को सक्षम कर सकते हैं और यदि आपके उपयोगकर्ता के पास Workspace में पर्याप्त विशेषाधिकार हैं, तो आप निम्नलिखित पंक्तियों के साथ सभी समूहों और उपयोगकर्ताओं को सूचीबद्ध कर सकते हैं।
यहां तक कि यदि यह identity groups
कहता है, तो यह बिना किसी समूह के उपयोगकर्ताओं को भी लौटाता है:
# 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
पिछले उदाहरणों में --labels
पैरामीटर आवश्यक है, इसलिए एक सामान्य मान का उपयोग किया गया है (यदि आप API का सीधे उपयोग करते हैं जैसे कि PurplePanda यहाँ करता है)।
यहां तक कि यदि प्रशासनिक सेवा सक्षम है, तो यह संभव है कि आपको उन्हें सूचीबद्ध करते समय एक त्रुटि मिले क्योंकि आपके समझौता किए गए कार्यक्षेत्र उपयोगकर्ता के पास पर्याप्त अनुमतियाँ नहीं हैं:
.png)
IAM
IAM के बारे में बुनियादी जानकारी के लिए इसे देखें।
डिफ़ॉल्ट अनुमतियाँ
दस्तावेज़ों के अनुसार: जब एक संगठन संसाधन बनाया जाता है, तो आपके डोमेन में सभी उपयोगकर्ताओं को डिफ़ॉल्ट रूप से बिलिंग खाता निर्माता और प्रोजेक्ट निर्माता भूमिकाएँ दी जाती हैं। ये डिफ़ॉल्ट भूमिकाएँ आपके उपयोगकर्ताओं को तुरंत Google Cloud का उपयोग शुरू करने की अनुमति देती हैं, लेकिन आपके संगठन संसाधन के नियमित संचालन में उपयोग के लिए नहीं हैं।
ये भूमिकाएँ अनुमतियाँ प्रदान करती हैं:
billing.accounts.create
औरresourcemanager.organizations.get
resourcemanager.organizations.get
औरresourcemanager.projects.create
इसके अलावा, जब एक उपयोगकर्ता एक प्रोजेक्ट बनाता है, तो उसे दस्तावेज़ों के अनुसार स्वतः उस प्रोजेक्ट का मालिक बना दिया जाता है। इसलिए, डिफ़ॉल्ट रूप से, एक उपयोगकर्ता एक प्रोजेक्ट बनाने और उस पर कोई भी सेवा चलाने में सक्षम होगा (खननकर्ता? कार्यक्षेत्र सूचीकरण? ...)
caution
GCP संगठन में सबसे उच्च विशेषाधिकार संगठन प्रशासक भूमिका है।
set-iam-policy बनाम add-iam-policy-binding
अधिकांश सेवाओं में, आप add-iam-policy-binding
या set-iam-policy
विधि का उपयोग करके एक संसाधन पर अनुमतियों को बदलने में सक्षम होंगे। मुख्य अंतर यह है कि add-iam-policy-binding
एक नई भूमिका बाइंडिंग मौजूदा IAM नीति में जोड़ता है जबकि set-iam-policy
पहले से दी गई अनुमतियों को हटाएगा और केवल उन अनुमतियों को सेट करेगा जो आदेश में निर्दिष्ट हैं।
सूचीकरण
# 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
इस सेवा का उपयोग करके विभिन्न संसाधनों (जैसे संगठनों, फ़ोल्डरों, परियोजनाओं...) में एक उपयोगकर्ता की सभी अनुमतियों की जांच करने के विभिन्न तरीके हैं।
- अनुमति
cloudasset.assets.searchAllIamPolicies
एक संसाधन के भीतर सभी iam नीतियों का अनुरोध कर सकती है।
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
- अनुमति
cloudasset.assets.analyzeIamPolicy
एक संसाधन के भीतर एक प्रमुख के सभी iam नीतियों का अनुरोध कर सकती है।
# 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.searchAllResources
किसी संगठन, फ़ोल्डर, या प्रोजेक्ट के सभी संसाधनों की सूची बनाने की अनुमति देती है। IAM से संबंधित संसाधन (जैसे भूमिकाएँ) शामिल हैं।
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.analyzeMove
एक संसाधन जैसे प्रोजेक्ट पर प्रभाव डालने वाली नीतियों को प्राप्त करने के लिए भी उपयोगी हो सकती है।
gcloud asset analyze-move --project=<proj-name> \
--destination-organization=609216679593
- मुझे लगता है कि अनुमति
cloudasset.assets.queryIamPolicy
भी प्रिंसिपलों की अनुमतियों को खोजने के लिए पहुंच प्रदान कर सकती है।
# 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
यदि आप पिछले तरीकों का उपयोग करके IAM जानकारी तक पहुँच नहीं सकते और आप एक रेड टीम में हैं। आप इस उपकरण का उपयोग कर सकते हैं https://github.com/carlospolop/bf_my_gcp_perms अपने वर्तमान अनुमतियों को ब्रूट-फोर्स करने के लिए।
हालाँकि, ध्यान दें कि सेवा cloudresourcemanager.googleapis.com
को सक्षम होना चाहिए।
Privesc
अगली पृष्ठ पर आप देख सकते हैं कि IAM अनुमतियों का दुरुपयोग करके विशेषाधिकार कैसे बढ़ाएँ:
Unauthenticated Enum
GCP - IAM, Principals & Org Unauthenticated Enum
Post Exploitation
Persistence
यदि आपके पास उच्च विशेषाधिकार हैं तो आप:
- नए SAs (या उपयोगकर्ताओं को यदि Workspace में हैं) बना सकते हैं
- अपने द्वारा नियंत्रित प्रिंसिपलों को अधिक अनुमतियाँ दे सकते हैं
- कमजोर SAs को अधिक विशेषाधिकार दे सकते हैं (vm में SSRF, vuln Cloud Function…)
- …
Org Policies
Org Policies के बारे में एक परिचय के लिए देखें:
IAM नीतियाँ यह संकेत देती हैं कि प्रिंसिपल के पास संसाधनों पर भूमिकाओं के माध्यम से कौन सी अनुमतियाँ हैं, जिन्हें बारीक अनुमतियाँ दी जाती हैं। संगठन नीतियाँ यह सीमित करती हैं कि उन सेवाओं का उपयोग कैसे किया जा सकता है या कौन सी सुविधाएँ अक्षम हैं। यह GCP वातावरण में प्रत्येक संसाधन के लिए न्यूनतम विशेषाधिकार को सुधारने में मदद करता है।
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
निम्नलिखित पृष्ठ पर आप org policies अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाने के तरीके की जांच कर सकते हैं:
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।