GCP - Cloudbuild Privesc

Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

cloudbuild

Para mais informações sobre o Cloud Build, consulte:

pageGCP - Cloud Build Enum

cloudbuild.builds.create

Com essa permissão, você pode enviar uma compilação na nuvem. A máquina cloudbuild terá em seu sistema de arquivos por padrão um token da Conta de Serviço cloudbuild: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com. No entanto, você pode indicar qualquer conta de serviço 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 obter o token (o arquivo contendo o token pode mudar).

Você pode encontrar o script de exploit original aqui no GitHub (mas o local de onde ele está pegando o token não funcionou para mim). Portanto, verifique um script para automatizar a criação, exploit e limpeza de um ambiente vulnerável aqui e um script em python para obter um shell reverso dentro da máquina cloudbuild e roubá-lo 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.builds.update

Potencialmente com essa permissão você poderá atualizar uma compilação na nuvem e apenas roubar o token da conta de serviço como foi feito com a permissão anterior (mas infelizmente, no momento desta escrita, não consegui encontrar nenhuma maneira de chamar essa API).

TODO

cloudbuild.repositories.accessReadToken

Com essa 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 essa permissão, o usuário pode obter o token de acesso de leitura e escrita 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"
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización