GCP - IAM, Principals & Org Unauthenticated Enum

Reading time: 6 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 का समर्थन करें

Iam & GCP Principals

अधिक जानकारी के लिए देखें:

GCP - IAM, Principals & Org Policies Enum

क्या डोमेन Workspace में उपयोग किया गया है?

  1. DNS रिकॉर्ड जांचें

यदि इसमें google-site-verification रिकॉर्ड है, तो यह संभावना है कि यह (या यह था) Workspace का उपयोग कर रहा है:

dig txt hacktricks.xyz

[...]
hacktricks.xyz.		3600	IN	TXT	"google-site-verification=2mWyPXMPXEEy6QqWbCfWkxFTcQhyYdwHrOxee1Yeo-0"
hacktricks.xyz.		3600	IN	TXT	"google-site-verification=C19PtLcZ1EGyzUYYJTX1Tp6bOGessxzN9gqE-SVKhRA"
hacktricks.xyz.		300	IN	TXT	"v=spf1 include:usb._netblocks.mimecast.com include:_spf.google.com include:_spf.psm.knowbe4.com include:_spf.salesforce.com include:spf.mandrillapp.com ~all"

यदि कुछ ऐसा include:_spf.google.com भी दिखाई देता है, तो यह इसकी पुष्टि करता है (ध्यान दें कि यदि यह नहीं दिखाई देता है, तो यह यह नहीं कहता कि एक डोमेन Workspace में हो सकता है बिना gmail को मेल प्रदाता के रूप में उपयोग किए)।

  1. उस डोमेन के साथ एक Workspace सेटअप करने की कोशिश करें

एक और विकल्प है कि उस डोमेन का उपयोग करके एक Workspace सेटअप करने की कोशिश करें, यदि यह शिकायत करता है कि डोमेन पहले से ही उपयोग में है (जैसे कि चित्र में), तो आप जानते हैं कि यह पहले से ही उपयोग में है!

Workspace डोमेन सेटअप करने के लिए अनुसरण करें: https://workspace.google.com/business/signup/welcome

  1. उस डोमेन का उपयोग करके एक ईमेल का पासवर्ड पुनर्प्राप्त करने की कोशिश करें

यदि आप जानते हैं कि उस डोमेन में कोई मान्य ईमेल पता है (जैसे: admin@email.com या info@email.com) तो आप खाता पुनर्प्राप्त करने की कोशिश कर सकते हैं https://accounts.google.com/signin/v2/recoveryidentifier, और यदि प्रयास कोई त्रुटि नहीं दिखाता है जो यह संकेत करता है कि Google को उस खाते के बारे में कोई जानकारी नहीं है, तो यह Workspace का उपयोग कर रहा है।

ईमेल और सेवा खातों की गणना करें

यह संभव है कि Workspace डोमेन और SA ईमेल के मान्य ईमेल की गणना करें उन्हें अनुमतियाँ सौंपने की कोशिश करके और त्रुटि संदेशों की जांच करके। इसके लिए आपको केवल एक प्रोजेक्ट को अनुमति देने के लिए अनुमतियाँ होनी चाहिए (जो केवल आपके द्वारा स्वामित्व में हो सकता है)।

ध्यान दें कि उन्हें जांचने के लिए लेकिन यदि वे मौजूद हैं तो उन्हें अनुमति न दें, आप serviceAccount का प्रकार उपयोग कर सकते हैं जब यह user है और user जब यह SA है:

bash
# Try to assign permissions to user 'unvalid-email-34r434f@hacktricks.xyz'
# but indicating it's a service account
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:unvalid-email-34r434f@hacktricks.xyz' \
--role='roles/viewer'
## Response:
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: User unvalid-email-34r434f@hacktricks.xyz does not exist.

# Now try with a valid email
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:support@hacktricks.xyz' \
--role='roles/viewer'
# Response:
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: Principal support@hacktricks.xyz is of type "user". The principal should appear as "user:support@hacktricks.xyz". See https://cloud.google.com/iam/help/members/types for additional documentation.

एक तेज़ तरीका है ज्ञात परियोजनाओं में सेवा खातों को सूचीबद्ध करने का, बस इस URL तक पहुँचने की कोशिश करें: https://iam.googleapis.com/v1/projects/<project-id>/serviceAccounts/<sa-email>
उदाहरण के लिए: https://iam.googleapis.com/v1/projects/gcp-labs-3uis1xlx/serviceAccounts/appengine-lab-1-tarsget@gcp-labs-3uis1xlx.iam.gserviceaccount.com

यदि प्रतिक्रिया 403 है, तो इसका मतलब है कि SA मौजूद है। लेकिन यदि उत्तर 404 है, तो इसका मतलब है कि यह मौजूद नहीं है:

json
// Exists
{
"error": {
"code": 403,
"message": "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.",
"status": "PERMISSION_DENIED"
}
}

// Doesn't exist
{
"error": {
"code": 404,
"message": "Unknown service account",
"status": "NOT_FOUND"
}
}

ध्यान दें कि जब उपयोगकर्ता का ईमेल मान्य था, तो त्रुटि संदेश ने संकेत दिया कि उनका प्रकार नहीं है, इसलिए हम यह पता लगाने में सफल रहे कि ईमेल support@hacktricks.xyz मौजूद है बिना इसे कोई विशेषाधिकार दिए।

आप Service Accounts के साथ भी user: प्रकार का उपयोग करके समान कर सकते हैं, बजाय serviceAccount: के:

bash
# Non existent
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:<invalid-sa-name>@<proj-uniq-name>.iam.gserviceaccount.com' \
--role='roles/viewer'
# Response
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: User <invalid-sa-name>@<proj-uniq-name>.iam.gserviceaccount.com does not exist.

# Existent
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:<sa-name>@<proj-uniq-name>.iam.gserviceaccount.com' \
--role='roles/viewer'
# Response
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: Principal testing@digital-bonfire-410512.iam.gserviceaccount.com is of type "serviceAccount". The principal should appear as "serviceAccount:testing@digital-bonfire-410512.iam.gserviceaccount.com". See https://cloud.google.com/iam/help/members/types for additional documentation.

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 का समर्थन करें