GCP - App Engine Enum

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Основна інформація

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

Брандмауер

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

SA

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

Сховище

Вихідний код та метадані автоматично зберігаються в бакетах з назвами, такими як <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-адресою <ім'я-унікального-проекту>.appspot.com, хоча URL-адреса старших версій буде трохи відрізнятися, наприклад, https://20240117t001540-dot-<ім'я-унікального-проекту>.uc.r.appspot.com (зверніть увагу на початковий мітки часу).

Може здатися, що можна розгорнути лише 1 веб-додаток движка програм за регіоном, але можна вказати service: <ім'я-сервісу> в app.yml та створити новий сервіс (новий веб). Формат URL-адреси для цього нового вебу буде <ім'я-сервісу>-dot-<ім'я-унікального-проекту>.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>

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

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