GCP - Cloud Run Enum

Support HackTricks

Cloud Run

Cloud Run एक सर्वरलेस प्रबंधित कंप्यूट प्लेटफ़ॉर्म है जो आपको कंटेनर को सीधे Google के स्केलेबल इन्फ्रास्ट्रक्चर पर चलाने की अनुमति देता है।

आप अपने कंटेनर को चला सकते हैं या यदि आप Go, Node.js, Python, Java, .NET Core, या Ruby का उपयोग कर रहे हैं, तो आप source-based deployment विकल्प का उपयोग कर सकते हैं जो आपके लिए कंटेनर बनाता है।

Google ने Cloud Run को अन्य सेवाओं के साथ अच्छी तरह से काम करने के लिए बनाया है, ताकि आप पूर्ण विशेषताओं वाले अनुप्रयोग बना सकें।

Services and jobs

Cloud Run पर, आपका कोड या तो सेवा के रूप में लगातार चल सकता है या नौकरी के रूप में। दोनों सेवाएँ और नौकरियाँ एक ही वातावरण में चलती हैं और Google Cloud पर अन्य सेवाओं के साथ समान एकीकरण का उपयोग कर सकती हैं।

  • Cloud Run सेवाएँ। वेब अनुरोधों या घटनाओं का उत्तर देने के लिए कोड चलाने के लिए उपयोग किया जाता है।

  • Cloud Run नौकरियाँ। वे कोड चलाने के लिए उपयोग किया जाता है जो कार्य (एक नौकरी) करता है और जब कार्य पूरा हो जाता है तो समाप्त हो जाता है।

Cloud Run Service

Google Cloud Run एक और सर्वरलेस पेशकश है जहाँ आप env variables के लिए भी खोज कर सकते हैं। Cloud Run एक छोटा वेब सर्वर बनाता है, जो डिफ़ॉल्ट रूप से कंटेनर के अंदर पोर्ट 8080 पर चलता है, जो HTTP GET अनुरोध की प्रतीक्षा करता है। जब अनुरोध प्राप्त होता है, तो एक नौकरी निष्पादित होती है और नौकरी का लॉग HTTP प्रतिक्रिया के माध्यम से आउटपुट होता है।

Relevant details

  • By default, the access to the web server is public, but it can also be limited to internal traffic (VPC...) Moreover, the authentication to contact the web server can be allowing all or to require authentication via IAM.

  • By default, the encryption uses a Google managed key, but a CMEK (Customer Managed Encryption Key) from KMS can also be chosen.

  • By default, the service account used is the Compute Engine default one which has Editor access over the project and it has the scope cloud-platform.

  • It's possible to define clear-text environment variables for the execution, and even mount cloud secrets or add cloud secrets to environment variables.

  • It's also possible to add connections with Cloud SQL and mount a file system.

  • The URLs of the services deployed are similar to https://<svc-name>-<random>.a.run.app

  • A Run Service can have more than 1 version or revision, and split traffic among several revisions.

Enumeration

# List services
gcloud run services list
gcloud run services list --platform=managed
gcloud run services list --platform=gke

# Get info of a service
gcloud run services describe --region <region> <svc-name>

# Get info of all the services together
gcloud run services list --format=yaml
gcloud run services list --platform=managed --format=json
gcloud run services list --platform=gke --format=json

# Get policy
gcloud run services get-iam-policy --region <region> <svc-name>

# Get revisions
gcloud run revisions list --region <region>
gcloud run revisions describe --region <region> <revision>

# Get domains
gcloud run domain-mappings list
gcloud run domain-mappings describe <name>

# Attempt to trigger a job unauthenticated
curl <url>

# Attempt to trigger a job with your current gcloud authorization
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" <url>

Cloud Run Jobs

Cloud Run jobs पूर्ण होने के लिए चलने वाले कंटेनरों के लिए बेहतर उपयुक्त होते हैं और अनुरोधों की सेवा नहीं करते। Jobs के पास अनुरोधों की सेवा करने या किसी पोर्ट पर सुनने की क्षमता नहीं होती। इसका मतलब है कि Cloud Run सेवाओं के विपरीत, jobs को एक वेब सर्वर को बंडल नहीं करना चाहिए। इसके बजाय, jobs कंटेनरों को समाप्त हो जाना चाहिए जब वे समाप्त हो जाएं।

Enumeration

gcloud beta run jobs list
gcloud beta run jobs describe --region <region> <job-name>
gcloud beta run jobs get-iam-policy --region <region> <job-name>

Privilege Escalation

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

Unauthenticated Access

Post Exploitation

Persistence

References

Support HackTricks

Last updated