GCP - Cloud Functions Enum

Reading time: 4 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Cloud Functions

Google Cloud Functions призначені для розміщення вашого коду, який виконується у відповідь на події, без необхідності управління хост-операційною системою. Крім того, ці функції підтримують зберігання змінних середовища, які може використовувати код.

Storage

Код Cloud Functions зберігається в GCP Storage. Тому будь-хто з доступом для читання до бакетів в GCP зможе читати код Cloud Functions.
Код зберігається в бакеті, як один з наступних:

  • gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip
  • gcf-v2-sources-<number>-<region>/<function-name>function-source.zip

Наприклад:
gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip

warning

Будь-який користувач з правами читання до бакету, що зберігає Cloud Function, може читати виконуваний код.

Artifact Registry

Якщо хмарна функція налаштована так, що виконуваний Docker-контейнер зберігається всередині репозиторію Artifact Registry в проекті, будь-хто з доступом для читання до репозиторію зможе завантажити зображення та перевірити вихідний код. Для отримання додаткової інформації дивіться:

GCP - Artifact Registry Enum

SA

Якщо не вказано, за замовчуванням до Cloud Function буде прикріплено Обліковий запис служби за замовчуванням App Engine з правами редактора на проект.

Triggers, URL & Authentication

Коли створюється Cloud Function, потрібно вказати тригер. Один з поширених - HTTPS, це створить URL, за яким функцію можна буде викликати через веб-браузер.
Інші тригери - pub/sub, Storage, Filestore...

Формат URL - https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>

Коли використовується тригер HTTPS, також вказується, чи потрібно викликачеві мати авторизацію IAM для виклику функції або чи може її викликати будь-хто:

Inside the Cloud Function

Код завантажується всередині папки /workspace з тими ж іменами файлів, що й у Cloud Function, і виконується з користувачем www-data.
Диск не змонтовано як тільки для читання.

Enumeration

bash
# List functions
gcloud functions list
gcloud functions describe <func_name> # Check triggers to see how is this function invoked
gcloud functions get-iam-policy <func_name>

# Get logs of previous runs. By default, limits to 10 lines
gcloud functions logs read <func_name> --limit [NUMBER]

# Call a function
curl https://<region>-<project>.cloudfunctions.net/<func_name>
gcloud functions call <func_name> --data='{"message": "Hello World!"}'

# If you know the name of projects you could try to BF cloud functions names

# Get events that could be used to trigger a cloud function
gcloud functions event-types list

# Access function with authentication
curl -X POST https://<region>-<project>.cloudfunctions.net/<func_name> \
-H "Authorization: bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" \
-d '{}'

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

На наступній сторінці ви можете перевірити, як зловживати дозволами функцій хмари для підвищення привілеїв:

GCP - Cloudfunctions Privesc

Неавтентифікований Доступ

GCP - Cloud Functions Unauthenticated Enum

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

GCP - Cloud Functions Post Exploitation

Постійність

GCP - Cloud Functions Persistence

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks