GCP - Cloud Run Enum

Support HackTricks

Cloud Run

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

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

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

Services and jobs

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

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

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

Cloud Run Service

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

Relevant details

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

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

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

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

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

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

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

Enumeration

# 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 Jobs

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

Enumeration

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 для підвищення привілеїв:

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

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

Постійність

Посилання

Support HackTricks

Last updated