GCP - Sourcerepos 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

Repositórios de Código Fonte

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

GCP - Source Repositories Enum

source.repos.get

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

bash
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:

  • Owner
  • Editor
  • Source Repository Administrator (roles/source.admin)
  • Source Repository Writer (roles/source.writer)

Para escrever, basta realizar um git push regular.

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:

GCP - Secretmanager Privesc

Adicionar chaves SSH

É possível adicionar chaves ssh ao projeto do Source Repository no console da web. Isso faz uma solicitaçã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:

bash
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 Fonte:

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 Fonte para não fazer upload de código contendo Chaves Privadas:

bash
gcloud source project-configs update --disable-pushblock

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

bash
gcloud source project-configs update --remove-topic=REMOVE_TOPIC
gcloud source project-configs update --remove-topic=UPDATE_TOPIC

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