GCP - App Engine Enum

HackTricks को समर्थन दें

Basic Information

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

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

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

  3. Language and Runtime Support: यह Java, Python, Node.js, Go, Ruby, PHP, और .NET जैसी लोकप्रिय प्रोग्रामिंग भाषाओं का समर्थन करता है। आप अपने एप्लिकेशन को एक मानक या एक लचीले वातावरण में चला सकते हैं। मानक वातावरण अधिक प्रतिबंधात्मक है लेकिन विशिष्ट भाषाओं के लिए अत्यधिक अनुकूलित है, जबकि लचीला वातावरण अधिक अनुकूलन की अनुमति देता है।

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

  5. Versioning and Traffic Splitting: आप आसानी से अपने एप्लिकेशन के कई संस्करण तैनात कर सकते हैं और फिर A/B परीक्षण या क्रमिक रोलआउट के लिए उनके बीच ट्रैफ़िक विभाजित कर सकते हैं।

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

  7. Security: यह एप्लिकेशन संस्करण, सुरक्षित कनेक्शन के लिए SSL/TLS प्रमाणपत्र, और पहचान और पहुंच प्रबंधन जैसी अंतर्निहित सुरक्षा सुविधाएं प्रदान करता है।

Firewall

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

SA

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

Storage

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

हर फ़ाइल ऐप की सामग्री के sha1 के साथ फ़ाइलनाम के रूप में संग्रहीत होती है:

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 ...

Containers

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

URLs & Regions

डिफ़ॉल्ट वेब पेज 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 होगा।

Enumeration

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

Cloud Functions की तरह, संभावना है कि एप्लिकेशन उन रहस्यों पर निर्भर करेगा जो रन-टाइम पर पर्यावरण चर के माध्यम से एक्सेस किए जाते हैं। ये चर एक 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>

Privilege Escalation

GCP - AppEngine Privesc

Unauthenticated Enum

GCP - App Engine Unauthenticated Enum

Post Exploitation

GCP - App Engine Post Exploitation

Persistence

GCP - App Engine Persistence
HackTricks को समर्थन दें

Last updated