GCP - Sourcerepos Privesc

Support HackTricks

Repositórios de Código Fonte

Para mais informações sobre Repositórios de Código Fonte, consulte:

source.repos.get

Com esta permissão, é possível baixar o repositório localmente:

gcloud source repos clone <repo-name> --project=<project-uniq-name>

source.repos.update

Um principal com esta permissão poderá escrever código dentro de um repositório clonado com gcloud source repos clone <repo>. Mas note que esta permissão não pode ser anexada a funções personalizadas, então deve ser concedida através de uma função predefinida como:

  • Proprietário

  • Editor

  • Administrador do Repositório de Código-Fonte (roles/source.admin)

  • Escritor do Repositório de Código-Fonte (roles/source.writer)

Para escrever, basta realizar um git push normal.

source.repos.setIamPolicy

Com esta permissão, um atacante poderia conceder a si mesmo as permissões anteriores.

Acesso a segredos

Se o atacante tiver acesso aos segredos onde os tokens estão armazenados, ele poderá roubá-los. Para mais informações sobre como acessar um segredo, verifique:

Adicionar chaves SSH

É possível adicionar chaves ssh ao projeto do Repositório de Código-Fonte na console web. Isso faz uma requisição POST para /v1/sshKeys:add e pode ser configurado em https://source.cloud.google.com/user/ssh_keys

Uma vez que sua chave ssh esteja configurada, você pode acessar um repositório com:

git clone ssh://username@domain.com@source.developers.google.com:2022/p/<proj-name>/r/<repo-name>

E então use os comandos git como de costume.

Credenciais Manuais

É possível criar credenciais manuais para acessar os Repositórios de Código:

Clicando no primeiro link, você será direcionado para https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3

O que irá solicitar um prompt de autorização Oauth para dar acesso ao Google Cloud Development. Portanto, você precisará ou das credenciais do usuário ou de uma sessão aberta no navegador para isso.

Isso o levará a uma página com um script bash para executar e configurar um cookie git em $HOME/.gitcookies

Executando o script, você poderá usar git clone, push... e funcionará.

source.repos.updateProjectConfig

Com essa permissão, é possível desativar a proteção padrão dos Repositórios de Código para não fazer upload de código contendo Chaves Privadas:

gcloud source project-configs update --disable-pushblock

Você também pode configurar um tópico pub/sub diferente ou até mesmo desativá-lo completamente:

gcloud source project-configs update --remove-topic=REMOVE_TOPIC
gcloud source project-configs update --remove-topic=UPDATE_TOPIC
Suporte ao HackTricks

Last updated