GCP - Cloud Build Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Google Cloud Build - це керована CI/CD платформа, яка автоматизує процеси створення та випуску програмного забезпечення, інтегруючись з репозиторіями вихідного коду та підтримуючи широкий спектр мов програмування. Вона дозволяє розробникам автоматично створювати, тестувати та розгортати код, надаючи можливість налаштовувати етапи створення та робочі процеси.
Кожен тригер Cloud Build пов'язаний з Cloud Repository або безпосередньо підключений до зовнішнього репозиторію (Github, Bitbucket та Gitlab).
Я не зміг знайти жодного способу вкрасти токен Github/Bitbucket звідси або з Cloud Repositories, оскільки, коли репозиторій завантажується, він доступний через URL https://source.cloud.google.com/, а Github не доступний клієнтом.
Cloud Build може бути активований, якщо:
Push до гілки: Вкажіть гілку
Push нового тегу: Вкажіть тег
Pull request: Вкажіть гілку, яка отримує PR
Ручний виклик
Повідомлення Pub/Sub: Вкажіть тему
Подія Webhook: Відкриє HTTPS URL, і запит повинен бути автентифікований за допомогою секрету
Є 3 варіанти:
YAML/JSON з вказівкою команд для виконання. Зазвичай: /cloudbuild.yaml
Лише один, який можна вказати “inline” у веб-консолі та в CLI
Найбільш поширений варіант
Важливий для неавтентифікованого доступу
Dockerfile для створення
Buildpack для створення
Службовий обліковий запис має область cloud-platform
, тому він може використовувати всі привілеї. Якщо жоден SA не вказано (як при подачі), буде використано за замовчуванням SA <proj-number>@cloudbuild.gserviceaccount.com
.
За замовчуванням жодні дозволи не надаються, але їх досить легко надати:
Можливо налаштувати Cloud Build так, щоб вимагати схвалення для виконання збірок (за замовчуванням вимкнено).
Коли тригер є PR, оскільки будь-хто може виконувати PR до публічних репозиторіїв, було б дуже небезпечно просто дозволити виконання тригера з будь-яким PR. Тому за замовчуванням виконання буде автоматичним лише для власників та співпрацівників, і для виконання тригера з PR інших користувачів власник або співпрацівник повинен прокоментувати /gcbrun
.
З'єднання можуть бути створені через:
GitHub: Відобразить запит OAuth, що запитує дозволи для отримання токена Github, який буде збережено в Secret Manager.
GitHub Enterprise: Запитає встановити GithubApp. Токен автентифікації з вашого хосту GitHub Enterprise буде створено та збережено в цьому проекті як секрет Secret Manager.
GitLab / Enterprise: Вам потрібно надати токен доступу API та токен доступу для читання API, які будуть збережені в Secret Manager.
Після створення з'єднання ви можете використовувати його для зв'язування репозиторіїв, до яких має доступ обліковий запис Github.
Ця опція доступна через кнопку:
Зверніть увагу, що репозиторії, підключені цим методом, доступні лише в тригерах, що використовують 2-ге покоління.
Це не те саме, що connection
. Це дозволяє різні способи отримати доступ до репозиторію Github або Bitbucket, але не генерує об'єкт з'єднання, але генерує об'єкт репозиторію (1-го покоління).
Ця опція доступна через кнопку:
Іноді Cloud Build генерує нове сховище для зберігання файлів для тригера. Це відбувається, наприклад, у прикладі, який пропонує GCP з:
Сховище з назвою security-devbox_cloudbuild створено для зберігання .tgz
з файлами, які будуть використані.
Встановіть gcloud всередині cloud build:
Ви можете знайти чутливу інформацію в конфігураціях збірки та журналах.
Вивчайте та практикуйте Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)