GCP - AppEngine Privesc

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

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

App Engine

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

pageGCP - App Engine Enum

appengine.applications.get, appengine.instances.get, appengine.instances.list, appengine.operations.get, appengine.operations.list, appengine.services.get, appengine.services.list, appengine.versions.create, appengine.versions.get, appengine.versions.list, cloudbuild.builds.get,iam.serviceAccounts.actAs, resourcemanager.projects.get, storage.objects.create, storage.objects.list

ये अनुमतियाँ gcloud cli का उपयोग करके App डिप्लॉय करने के लिए आवश्यक हैं। शायद get और list वाली अनुमतियों को टाला जा सकता है।

आप https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/appengine में पायथन कोड उदाहरण देख सकते हैं।

डिफ़ॉल्ट रूप से, App सेवा का नाम default होगा, और एक ही नाम वाला केवल 1 इंस्टेंस हो सकता है। इसे बदलने और एक दूसरा App बनाने के लिए, app.yaml में, रूट कुंजी के मान को कुछ इस प्रकार से बदलें service: my-second-app

cd python-docs-samples/appengine/flexible/hello_world
gcloud app deploy #Upload and start application inside the folder

कम से कम 10-15 मिनट दें, अगर यह काम नहीं करता है तो कई बार डिप्लॉय करें और कुछ मिनट इंतजार करें।

सेवा अकाउंट का उपयोग करने के लिए संकेत देना संभव है लेकिन डिफ़ॉल्ट रूप से, एप इंजन डिफ़ॉल्ट एसए का उपयोग किया जाता है।

एप्लिकेशन का URL कुछ इस प्रकार होता है https://<proj-name>.oa.r.appspot.com/ या https://<service_name>-dot-<proj-name>.oa.r.appspot.com

appengine.instances.enableDebug, appengine.instances.get, appengine.instances.list, appengine.operations.get, appengine.services.get, appengine.services.list, appengine.versions.get, appengine.versions.list, compute.projects.get

इन अनुमतियों के साथ, एप इंजन इंस्टेंसेस में एसएचएस के माध्यम से लॉगिन किया जा सकता है जो प्रकार फ्लेक्सिबल (स्टैंडर्ड नहीं) है। कुछ list और get अनुमतियों की वास्तव में आवश्यकता नहीं हो सकती

gcloud app instances ssh --service <app-name> --version <version-id> <ID>

appengine.applications.update, appengine.operations.get

मुझे लगता है कि यह केवल पृष्ठभूमि एसए गूगल को बदल देगा जिसका उपयोग एप्लिकेशन सेटअप के लिए किया जाएगा, इसलिए मुझे लगता है कि आप इसका दुरुपयोग करके सेवा खाता चुरा नहीं सकते।

```bash gcloud app update --service-account= ``` ### `appengine.versions.getFileContents`, `appengine.versions.update`

इन अनुमतियों का उपयोग कैसे करें या यह उपयोगी हैं या नहीं, इसका पता नहीं है (ध्यान दें कि जब आप कोड बदलते हैं तो एक नया संस्करण बनाया जाता है, इसलिए मुझे यह पता नहीं है कि क्या आप सिर्फ कोड या एक कोड को अपडेट कर सकते हैं, लेकिन मुझे लगता है कि आपको यह करना चाहिए, शायद बकेट के अंदर कोड बदल सकते हैं??).

बकेट्स पर लेखन अधिकार

जहां स्रोत कोड स्थित है, उस बकेट्स पर लेखन अधिकार होने के बावजूद स्रोत कोड और manifest.json को संशोधित करके विचित्र कोड को निष्पादित करना संभव नहीं था. शायद अगर आप बकेट का मॉनिटरिंग कर रहे हैं और एक नया संस्करण बनाया जाता है और स्रोत कोड और मैनिफेस्ट अपलोड किया जाता है, तो शायद इसे बदलना संभव हो सकता है ताकि नया संस्करण वापसद्वारित वालों का उपयोग करे??

यह भी लगता है कि कंटेनर लेयर बकेट में स्टोर होते हैं, शायद उन्हें बदलना?

Last updated