GCP - IAM, Principals & Org Policies Enum

Support HackTricks

सेवा खाते

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

GCP - Basic Information

गणना

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

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

Users & Groups

GCP में Users & Groups कैसे काम करते हैं, इसके लिए एक परिचय देखें:

GCP - Basic Information

Enumeration

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

ध्यान दें कि डिफ़ॉल्ट रूप से, 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

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

यहां तक कि यदि प्रशासन सेवा सक्षम है, तो यह संभव है कि आपको उन्हें सूचीबद्ध करते समय एक त्रुटि मिले क्योंकि आपका समझौता किया गया कार्यक्षेत्र उपयोगकर्ता के पास पर्याप्त अनुमतियाँ नहीं हैं:

IAM

IAM के बारे में बुनियादी जानकारी के लिए इसे देखें

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

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

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

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

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

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

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

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

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

Privesc

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

GCP - IAM Privesc

Unauthenticated Enum

GCP - IAM, Principals & Org Unauthenticated Enum

Post Exploitation

GCP - IAM Post Exploitation

Persistence

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

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

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

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

Org Policies

Org Policies क्या हैं, इसके बारे में एक परिचय के लिए देखें:

GCP - 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

Privesc

In the following page you can check how to org नीतियों की अनुमतियों का दुरुपयोग करके विशेषाधिकार बढ़ाना:

GCP - Orgpolicy Privesc
Support HackTricks

Last updated