GCP - App Engine Enum

Reading time: 6 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Basic Information

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

  1. सर्वरलेस आर्किटेक्चर: App Engine स्वचालित रूप से बुनियादी ढाँचे को संभालता है, जिसमें सर्वर प्रावधान, कॉन्फ़िगरेशन और स्केलिंग शामिल हैं। यह डेवलपर्स को कोड लिखने पर ध्यान केंद्रित करने की अनुमति देता है बिना अंतर्निहित हार्डवेयर की चिंता किए।
  2. स्वचालित स्केलिंग: App Engine आपके अनुप्रयोग को प्राप्त ट्रैफ़िक की मात्रा के जवाब में स्वचालित रूप से स्केल कर सकता है। यह बढ़ते ट्रैफ़िक को संभालने के लिए स्केल करता है और जब ट्रैफ़िक कम होता है तो इसे कम करता है, जिससे लागत और प्रदर्शन का अनुकूलन होता है।
  3. भाषा और रनटाइम समर्थन: यह लोकप्रिय प्रोग्रामिंग भाषाओं जैसे Java, Python, Node.js, Go, Ruby, PHP, और .NET का समर्थन करता है। आप अपने अनुप्रयोगों को मानक या लचीले वातावरण में चला सकते हैं। मानक वातावरण अधिक प्रतिबंधात्मक है लेकिन विशिष्ट भाषाओं के लिए अत्यधिक अनुकूलित है, जबकि लचीला वातावरण अधिक अनुकूलन की अनुमति देता है।
  4. एकीकृत सेवाएँ: App Engine कई अन्य GCP सेवाओं के साथ एकीकृत होता है, जैसे Cloud SQL, Cloud Storage, Cloud Datastore, और अधिक। यह एकीकरण क्लाउड-आधारित अनुप्रयोगों की आर्किटेक्चर को सरल बनाता है।
  5. संस्करण और ट्रैफ़िक विभाजन: आप अपने अनुप्रयोग के कई संस्करणों को आसानी से तैनात कर सकते हैं और फिर A/B परीक्षण या क्रमिक रोलआउट के लिए उनके बीच ट्रैफ़िक विभाजित कर सकते हैं।
  6. अनुप्रयोग अंतर्दृष्टि: App Engine लॉगिंग, उपयोगकर्ता प्रमाणीकरण, और अनुप्रयोगों की निगरानी और प्रबंधन के लिए डेवलपर उपकरणों का एक सूट जैसे अंतर्निहित सेवाएँ प्रदान करता है।
  7. सुरक्षा: यह अनुप्रयोग संस्करणन, सुरक्षित कनेक्शनों के लिए SSL/TLS प्रमाणपत्र, और पहचान और पहुँच प्रबंधन जैसी अंतर्निहित सुरक्षा सुविधाएँ प्रदान करता है।

Firewall

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

SA

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

Storage

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

App का हर फ़ाइल सामग्री के sha1 को फ़ाइल नाम के रूप में संग्रहीत किया जाता है:

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

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

caution

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

Cloud Functions की तरह, ऐप्लिकेशन के रन-टाइम पर पर्यावरण चर के माध्यम से एक्सेस किए गए रहस्यों पर निर्भर होने की संभावना है। ये चर एक app.yaml फ़ाइल में संग्रहीत होते हैं जिसे निम्नलिखित तरीके से एक्सेस किया जा सकता है:

bash
# 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>

विशेषाधिकार वृद्धि

GCP - AppEngine Privesc

अनधिकृत Enum

GCP - App Engine Unauthenticated Enum

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

GCP - App Engine Post Exploitation

स्थिरता

GCP - App Engine Persistence

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें