GCP - App Engine Enum

Підтримайте HackTricks

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

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

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

SA

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

Storage

Вихідний код та метадані автоматично зберігаються у buckets з такими іменами, як <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 (зверніть увагу на початкову мітку часу).

Може здатися, що можливо розгорнути лише один веб-додаток 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
Підтримайте HackTricks

Last updated