GCP - AppEngine Privesc
App Engine
App Engine के बारे में अधिक जानकारी के लिए देखें:
pageGCP - App Engine Enumappengine.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
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
कम से कम 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
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
अनुमतियों की वास्तव में आवश्यकता नहीं हो सकती।
appengine.applications.update
, appengine.operations.get
appengine.applications.update
, appengine.operations.get
मुझे लगता है कि यह केवल पृष्ठभूमि एसए गूगल को बदल देगा जिसका उपयोग एप्लिकेशन सेटअप के लिए किया जाएगा, इसलिए मुझे लगता है कि आप इसका दुरुपयोग करके सेवा खाता चुरा नहीं सकते।
```bash gcloud app update --service-account= ``` ### `appengine.versions.getFileContents`, `appengine.versions.update`
इन अनुमतियों का उपयोग कैसे करें या यह उपयोगी हैं या नहीं, इसका पता नहीं है (ध्यान दें कि जब आप कोड बदलते हैं तो एक नया संस्करण बनाया जाता है, इसलिए मुझे यह पता नहीं है कि क्या आप सिर्फ कोड या एक कोड को अपडेट कर सकते हैं, लेकिन मुझे लगता है कि आपको यह करना चाहिए, शायद बकेट के अंदर कोड बदल सकते हैं??).
बकेट्स पर लेखन अधिकार
जहां स्रोत कोड स्थित है, उस बकेट्स पर लेखन अधिकार होने के बावजूद स्रोत कोड और manifest.json
को संशोधित करके विचित्र कोड को निष्पादित करना संभव नहीं था.
शायद अगर आप बकेट का मॉनिटरिंग कर रहे हैं और एक नया संस्करण बनाया जाता है और स्रोत कोड और मैनिफेस्ट अपलोड किया जाता है, तो शायद इसे बदलना संभव हो सकता है ताकि नया संस्करण वापसद्वारित वालों का उपयोग करे??
यह भी लगता है कि कंटेनर लेयर बकेट में स्टोर होते हैं, शायद उन्हें बदलना?
Last updated