GCP - IAM, Principals & Org Policies Enum

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

सेवा अकाउंट्स

सेवा अकाउंट के बारे में जानकारी के लिए निम्नलिखित देखें:

pageGCP - Basic Information

गणना

एक सेवा अकाउंट हमेशा किसी परियोजना से संबंधित होता है:

gcloud iam service-accounts list --project <project>

उपयोगकर्ता और समूह

GCP में उपयोगकर्ताओं और समूहों का काम कैसे करता है, इसके बारे में जानकारी के लिए निम्न लिंक देखें:

pageGCP - Basic Information

गणना

अनुमतियों serviceusage.services.enable और serviceusage.services.use के साथ सेवाएं सक्षम करना और उन्हें उपयोग करना संभव है।

ध्यान दें कि डिफ़ॉल्ट रूप से, Workspace उपयोगकर्ताओं को परियोजना निर्माता भूमिका प्रदान की जाती है, जिससे उन्हें नई परियोजनाएं बनाने का अधिकार मिलता है। जब एक उपयोगकर्ता एक परियोजना बनाता है, तो उसे उसके ऊपर owner भूमिका प्रदान की जाती है। इसलिए, वह इन सेवाओं को परियोजना पर सक्षम कर सकता है ताकि Workspace को गणना कर सके

हालांकि, ध्यान दें कि Workspace में पर्याप्त अनुमतियाँ होना भी आवश्यक है ताकि इन API को कॉल कर सकें।

यदि आप admin सेवा को सक्षम कर सकते हैं और यदि आपके पास Workspace में पर्याप्त विशेषाधिकार हैं, तो निम्नलिखित लाइनों के साथ आप सभी समूह और उपयोगकर्ताओं की गणना कर सकते हैं। यद्यपि यह पहचान समूह कहता है, तो यह किसी समूह के बिना उपयोगकर्ताओं को भी वापस देता है:

# 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

पिछले उदाहरणों में पैराम --labels आवश्यक है, इसलिए एक सामान्य मान का उपयोग किया जाता है (यह आवश्यक नहीं है अगर आप API का सीधा उपयोग करते हैं जैसे PurplePanda यहाँ करता है

व्यवस्थापक सेवा सक्षम होने के बावजूद, संभावना है कि आपको उन्हें गणना करते समय त्रुटि मिले क्योंकि आपके कंप्रोमाइज़्ड वर्कस्पेस उपयोगकर्ता के पास पर्याप्त अनुमतियाँ नहीं हैं:

IAM

IAM के बारे में मौलिक जानकारी के लिए यह देखें

डिफ़ॉल्ट अनुमतियाँ

दस्तावेज़ से: जब एक संगठन संसाधन बनाया जाता है, तो डिफ़ॉल्ट रूप से आपके डोमेन में सभी उपयोगकर्ताओं को बिलिंग अकाउंट निर्माता और प्रोजेक्ट निर्माता भूमिकाएँ प्रदान की जाती हैं। ये डिफ़ॉल्ट भूमिकाएँ आपके उपयोगकर्ताओं को तुरंत Google Cloud का उपयोग करना शुरू करने की अनुमति देती हैं, लेकिन आपके संगठन संसाधन के नियमित परिचालन में उपयोग के लिए नहीं हैं।

ये भूमिकाएँ निम्नलिखित अनुमतियाँ प्रदान करती हैं:

  • billing.accounts.create और resourcemanager.organizations.get

  • resourcemanager.organizations.get और resourcemanager.projects.create

इसके अतिरिक्त, जब एक उपयोगकर्ता एक परियोजना बनाता है, तो वह दस्तावेज़ के अनुसार उस परियोजना के मालिक को स्वचालित रूप से प्रदान किया जाता है। इसलिए, डिफ़ॉल्ट रूप से, एक उपयोगकर्ता एक परियोजना बना सकेगा और उस पर किसी भी सेवा को चला सकेगा (माइनर्स? वर्कस्पेस गणना? ...)

GCP संगठन में सबसे अधिक विशेषाधिकार संगठन प्रशासक भूमिका है।

set-iam-policy vs 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 जांच

इस सेवा का उपयोग करके विभिन्न संसाधनों (जैसे संगठन, फोल्डर, परियोजनाएं...) में एक उपयोगकर्ता की सभी अनुमतियों की जांच करने के लिए विभिन्न तरीके हैं।

  • अनुमति 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 एक संसाधक के भीतर एक संसाधन के सभी आईएएम नीतियों का अनुरोध कर सकती है।

# 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

परीक्षणIamPermissions जाँच

यदि आप पिछले तरीके से IAM जानकारी तक पहुँच नहीं सकते और आप रेड टीम में हैं। तो आप उपकरण का उपयोग कर सकते हैं https://github.com/carlospolop/bf_my_gcp_perms अपनी वर्तमान अनुमतियों को ब्रूट-फोर्स करने के लिए।

हालांकि, ध्यान दें कि सेवा cloudresourcemanager.googleapis.com को सक्षम किया जाना चाहिए।

Privesc

निम्नलिखित पृष्ठ पर आप देख सकते हैं कि IAM अनुमतियों का दुरुपयोग करके विशेषाधिकारों को उन्नत कैसे किया जा सकता है:

pageGCP - IAM Privesc

अप्रमाणित जाँच

pageGCP - IAM, Principals & Org Unauthenticated Enum

पोस्ट एक्सप्लोइटेशन

pageGCP - IAM Post Exploitation

स्थिरता

यदि आपके पास उच्च अधिकार हैं तो आप:

  • नए एसए (या उपयोगकर्ता यदि Workspace में हैं) बना सकते हैं

  • अपने द्वारा नियंत्रित प्रिंसिपल्स को अधिक अनुमतियाँ दे सकते हैं

  • विकल्प एसए (vm में SSRF, vuln Cloud Function में…) को अधिक विशेषाधिकार दे सकते हैं

संगठन नीतियाँ

जानने के लिए कि संगठन नीतियाँ क्या हैं, यहाँ देखें:

pageGCP - Basic Information

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

विशेषाधिकार

निम्नलिखित पृष्ठ पर आप देख सकते हैं कि विशेषाधिकार बढ़ाने के लिए ओर्ग नीतियों की अनुमतियों का दुरुपयोग कैसे करें:

pageGCP - Orgpolicy Privesc
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated