GCP - Cloud Functions Enum

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

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

Cloud Functions

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

Зберігання

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

gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip наприклад: gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip

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

SA

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

Тригери, URL та Аутентифікація

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

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

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

У Cloud Function

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

Енумерація

# 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 '{}'

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

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

pageGCP - Cloudfunctions Privesc

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

pageGCP - Cloud Functions Unauthenticated Enum

Післяексплуатаційна діяльність

pageGCP - Cloud Functions Post Exploitation

Постійність

pageGCP - Cloud Functions Persistence

Посилання

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

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

Last updated