GCP - App Engine Enum

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

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

मौलिक जानकारी

Google Cloud Platform's (GCP) App Engine एक मजबूत, सर्वरलेस प्लेटफ़ॉर्म है जो वेब एप्लिकेशनों के विकास और होस्टिंग के लिए बड़े पैमाने पर डिज़ाइन किया गया है। इस प्लेटफ़ॉर्म का डिज़ाइन विकास प्रक्रिया को सरल बनाने और एप्लिकेशनों की प्रबंधन को बेहतर बनाने पर ध्यान केंद्रित है। GCP के App Engine की मुख्य विशेषताएँ और लाभ शामिल हैं:

  1. सर्वरलेस आर्किटेक्चर: App Engine स्वचालित रूप से इंफ्रास्ट्रक्चर का संचालन करता है, सर्वर प्रोविज़निंग, कॉन्फ़िगरेशन, और स्केलिंग सहित। यह विकासकोड लिखने पर ध्यान केंद्रित करने देता है बिना नीचे के हार्डवेयर के बारे में चिंता किए।

  2. स्वचालित स्केलिंग: App Engine आपके एप्लिकेशन को ट्रैफ़िक की मात्रा के प्रतिक्रिया में स्वचालित रूप से स्केल कर सकता है। यह ट्रैफ़िक बढ़ने पर स्केल करता है और ट्रैफ़िक कम होने पर स्केल डाउन करता है, जो लागत और प्रदर्शन को अनुकूलित करने में मदद करता है।

  3. भाषा और रनटाइम समर्थन: यह जावा, पायथन, नोड.जेएस, गो, रूबी, पीएचपी, और .नेट जैसी लोकप्रिय प्रोग्रामिंग भाषाओं का समर्थन करता है। आप अपने एप्लिकेशन को स्टैंडर्ड या फ्लेक्सिबल वातावरण में चला सकते हैं। स्टैंडर्ड वातावरण अधिक प्रतिबंधित है लेकिन विशेष भाषाओं के लिए अधिक अनुकूलित है, जबकि फ्लेक्सिबल वातावरण अधिक अनुकूलन की अनुमति देता है।

  4. एकीकृत सेवाएं: App Engine कई अन्य GCP सेवाओं के साथ एकीकृत है, जैसे Cloud SQL, Cloud Storage, Cloud Datastore, और अधिक। यह एकीकरण क्लाउड-आधारित एप्लिकेशनों की वास्तुकला को सरल बनाता है।

  5. वर्शनिंग और ट्रैफ़िक स्प्लिटिंग: आप आसानी से अपने एप्लिकेशन के कई संस्करण डिप्लॉय कर सकते हैं और फिर उनमें से ट्रैफ़िक को A/B टेस्टिंग या धीरे-धीरे रोलआउट के लिए विभाजित कर सकते हैं।

  6. एप्लिकेशन इंसाइट्स: App Engine लॉगिंग, उपयोगकर्ता प्रमाणीकरण, और एप्लिकेशन की मॉनिटरिंग और प्रबंधन के लिए डेवलपर टूल्स की एक सुइट जैसी निर्मित सेवाएं प्रदान करता है।

  7. सुरक्षा: इसमें एप्लिकेशन वर्जनिंग, सुरक्षित कनेक्शनों के लिए SSL/TLS प्रमाणपत्र, और पहचान और एक्सेस प्रबंधन जैसी इनबिल्ट सुरक्षा विशेषताएँ शामिल हैं।

फ़ायरवॉल

एप्लिकेशन्स चलाने वाले इंस्टेंसेस के लिए एक सरल फ़ायरवॉल कॉन्फ़िगर किया जा सकता है जिसमें निम्नलिखित विकल्प होते हैं:

SA

इन एप्स द्वारा उपयोग किए जाने वाले डिफ़ॉल्ट सर्विस अकाउंट है <proj-name>@appspot.gserviceaccount.com जिसके पास प्रोजेक्ट पर संपादक भूमिका है और APP Engine इंस्टेंस के अंदर के SAs क्लाउड-प्लेटफ़ॉर्म स्कोप के साथ चलते हैं (अन्यों में).

स्टोरेज

सोर्स कोड और मेटाडेटा बकेट में स्वचालित रूप से स्टोर किया जाता है जिनके नाम होते हैं <proj-id>.appspot.com और staging.<proj-id>.appspot.com और <country>.<proj-id>.appspot.com

हर फ़ाइल को एप्लिकेशन का शा1 ऑफ़ कंटेंट के रूप में फ़ाइल नाम के साथ स्टोर किया जाता है:

staging.<proj-id>.appspot.com के ae फ़ोल्डर के अंदर, हर संस्करण के लिए एक फ़ोल्डर मौजूद है जिसमें सोर्स कोड फ़ाइलें होती हैं और manifest.json फ़ाइल होती है जो एप्लिकेशन के घटकों का वर्णन करती है:

{"requirements.txt":{"sourceUrl":"https://storage.googleapis.com/staging.onboarding-host-98efbf97812843.appspot.com/a270eedcbe2672c841251022b7105d340129d108","sha1Sum":"a270eedc_be2672c8_41251022_b7105d34_0129d108"},"main_test.py":{"sourceUrl":"https://storage.googleapis.com/staging.onboarding-host-98efbf97812843.appspot.com/0ca32fd70c953af94d02d8a36679153881943f32","sha1Sum":"0ca32fd7_0c953af9_4d02d8a ...

कंटेनर

वेब ऐप अंततः एक कंटेनर के अंदर निष्पादित किया जाएगा और कोड बिल्ड का उपयोग कंटेनर बनाने के लिए किया जाता है।

URLs और क्षेत्र

डिफ़ॉल्ट वेब पेज का URL <project-uniq-name>.appspot.com में उजागर किया जाएगा हालांकि पुराने संस्करणों का URL थोड़ा भिन्न होगा, जैसे https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com (शुरुआती समयचिह्न का ध्यान दें)।

ऐसा लग सकता है कि केवल 1 एप्लिकेशन इंजन वेब एप्लिकेशन प्रति क्षेत्र डिप्लॉय करना संभव है, लेकिन app.yml में service: <servicename> को इंडिकेट करना संभव है और एक नयी सेवा (एक नया वेब) बनाना संभव है। इस नए वेब के लिए URL का प्रारूप होगा <servicename>-dot-<project-uniq-name>.appspot.com

गणना

हर बार जब आप ऐप में नया कोड अपलोड करते हैं, एक नया संस्करण बनाया जाता हैसभी संस्करण संग्रहीत होते हैं और उनके पास एक उन्हें एक्सेस करने के लिए एक URL भी होता है। इसलिए पुराने संस्करण के कोड को संशोधित करना एक महान स्थिरता तकनीक हो सकता है।

क्लाउड फंक्शन के साथ, एक संभावना है कि एप्लिकेशन समय पर एनवायरमेंट वेरिएबल्स के माध्यम से एक्सेस किए जाने वाले रहस्य पर आधारित हो सकता है। ये वेरिएबल्स एक app.yaml फ़ाइल में संग्रहित होते हैं जिन्हें निम्नलिखित रूप से एक्सेस किया जा सकता है:

# List the apps
gcloud app services list
gcloud app services describe <app-name>
# Access via browser to the specified app
gcloud app services browse <app-name>

# Get App versions
gcloud app versions list
# Get all the info of the app and version, included specific verion URL and the env
gcloud app versions describe -s <app-name> <version-id>

# Logs
gcloud app logs tail -s <app-name>

# Instances
## This is only valid if a flexible environment is used and not a standard one
gcloud app instances list
gcloud app instances describe -s <app-name> --version <version-id> <ID>
## Connect to the instance via ssh
gcloud app instances ssh --service <app-name> --version <version-id> <ID>

# Firewalls
gcloud app firewall-rules list
gcloud app firewall-rules describe <num_fw>

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

# SSl certificates
gcloud app ssl-certificates list
gcloud app ssl-certificates describe <name>

विशेषाधिकार उन्नयन

pageGCP - AppEngine Privesc

अप्रमाणित एनुम

pageGCP - App Engine Unauthenticated Enum

पोस्ट एक्सप्लोइटेशन

pageGCP - App Engine Post Exploitation

स्थिरता

pageGCP - App Engine Persistence
जीरो से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert)!

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

Last updated