GCP - Cloud Run Enum

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

Cloud Run

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

Ви можете запускати свій контейнер або, якщо ви використовуєте Go, Node.js, Python, Java, .NET Core або Ruby, ви можете використовувати опцію розгортання на основі вихідного коду, яка створює контейнер за вас.

Google створив Cloud Run для продуктивної роботи разом з іншими службами на Google Cloud, щоб ви могли створювати повнофункціональні додатки.

Служби та завдання

На Cloud Run ваш код може працювати постійно як служба або як завдання. Як служби, так і завдання працюють в одному середовищі і можуть використовувати ті ж інтеграції з іншими службами на Google Cloud.

  • Служби Cloud Run. Використовуються для виконання коду, який реагує на веб-запити або події.

  • Завдання Cloud Run. Використовуються для виконання коду, який виконує роботу (завдання) і завершується після завершення роботи.

Служба Cloud Run

Google Cloud Run - це ще один пропозиція без сервера, де ви можете шукати змінні середовища. Cloud Run створює невеликий веб-сервер, який працює на порту 8080 в контейнері за замовчуванням, який чекає на HTTP GET-запит. Коли отримано запит, виконується завдання, а журнал завдання виводиться через відповідь HTTP.

Відповідні деталі

  • За замовчуванням, доступ до веб-сервера є публічним, але його також можна обмежити для внутрішнього трафіку (VPC...). Більше того, аутентифікація для звернення до веб-сервера може бути дозволена всім або вимагати аутентифікацію через IAM.

  • За замовчуванням шифрування використовує керований Google ключ, але також можна вибрати CMEK (Ключ шифрування, керований клієнтом) з KMS.

  • За замовчуванням використовується обліковий запис служби - це обліковий запис Compute Engine за замовчуванням, який має доступ Редактора до проекту та має область cloud-platform.

  • Можливо визначити змінні середовища у відкритому вигляді для виконання, а також підключати секрети хмари або додавати секрети хмари до змінних середовища.

  • Також можливо встановлювати з'єднання з Cloud SQL та підключати файлову систему.

  • URL-адреси розгорнутих служб подібні до https://<svc-name>-<random>.a.run.app

  • У служби Run може бути більше 1 версії або ревізія, і розподіляти трафік між кількома ревізіями.

Енумерація

# List services
gcloud run services list
gcloud run services list --platform=managed
gcloud run services list --platform=gke

# Get info of a service
gcloud run services describe --region <region> <svc-name>

# Get info of all the services together
gcloud run services list --format=yaml
gcloud run services list --platform=managed --format=json
gcloud run services list --platform=gke --format=json

# Get policy
gcloud run services get-iam-policy --region <region> <svc-name>

# Get revisions
gcloud run revisions list --region <region>
gcloud run revisions describe --region <region> <revision>

# Get domains
gcloud run domain-mappings list
gcloud run domain-mappings describe <name>

# Attempt to trigger a job unauthenticated
curl <url>

# Attempt to trigger a job with your current gcloud authorization
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" <url>

Завдання Cloud Run

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

gcloud beta run jobs list
gcloud beta run jobs describe --region <region> <job-name>
gcloud beta run jobs get-iam-policy --region <region> <job-name>

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

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

GCP - Run Privesc

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

GCP - Cloud Run Unauthenticated Enum

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

GCP - Cloud Run Post Exploitation

Постійність

GCP - Cloud Run Persistence

Посилання

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

Last updated