GCP - App Engine Enum

Support HackTricks

Basic Information

Google Cloud Platform's (GCP) App Engine є надійною, безсерверною платформою, призначеною для розробки та хостингу веб-додатків у великому масштабі. Дизайн цієї платформи зосереджений на спрощенні процесу розробки та підвищенні керованості додатків. Основні функції та переваги App Engine GCP включають:

  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

Простий firewall може бути налаштований для екземплярів, що виконують додатки, з наступними опціями:

SA

За замовчуванням обліковий запис служби, що використовується цими додатками, є <proj-name>@appspot.gserviceaccount.com, який має роль Editor над проектом, а SAs всередині екземпляра APP Engine працюють з обсягом cloud-platform (серед інших).

Storage

Вихідний код та метадані автоматично зберігаються в кошиках з іменами, такими як <proj-id>.appspot.com та staging.<proj-id>.appspot.com та <country>.<proj-id>.appspot.com

Кожен файл додатку зберігається з sha1 вмісту як ім'я файлу:

Всередині ae папки з staging.<proj-id>.appspot.com, існує одна папка на версію з файлами вихідного коду та 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 ...

Контейнери

Веб-додаток в кінцевому підсумку буде виконуватись всередині контейнера і Code Build використовується для створення контейнера.

URL-адреси та регіони

За замовчуванням веб-сторінка буде доступна за URL <project-uniq-name>.appspot.com, хоча URL старіших версій буде трохи іншим, наприклад, https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com (зверніть увагу на початковий часовий штамп).

Може здатися, що можливо розгорнути лише 1 веб-додаток App Engine на регіон, але можна вказати service: <servicename> у app.yml і створити нову службу (новий веб). Формат URL для цього нового вебу буде <servicename>-dot-<project-uniq-name>.appspot.com.

Перерахування

Кожного разу, коли ви завантажуєте новий код до Додатку, створюється нова версія. Всі версії зберігаються і у них навіть є 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>

Підвищення Привілеїв

GCP - AppEngine Privesc

Неавтентифікований Перелік

GCP - App Engine Unauthenticated Enum

Після Експлуатації

GCP - App Engine Post Exploitation

Постійність

GCP - App Engine Persistence
Support HackTricks

Last updated