GCP - Sourcerepos Privesc

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

Source Repositories

Para mais informações sobre Source Repositories, veja:

GCP - Source Repositories Enum

source.repos.get

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

Clonar repositório ```bash gcloud source repos clone --project= ```

source.repos.update

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

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

Para escrever, basta executar um git push regular.

source.repos.setIamPolicy

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

Secret access

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

GCP - Secretmanager Privesc

Add SSH keys

É possível adicionar ssh keys ao projeto do Source Repository no 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:

Clonar repositório usando SSH ```bash git clone ssh://username@domain.com@source.developers.google.com:2022/p//r/ ```

E então use os comandos git normalmente.

Credenciais Manuais

É possível criar credenciais manuais para acessar os Source Repositories:

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

Isso exibirá um Oauth authorization prompt para conceder acesso ao Google Cloud Development. Portanto, você precisará ou das credentials of the user ou de uma open session in the browser para isso.

Isso o enviará para uma página com um bash script to execute que configura um cookie do git em $HOME/.gitcookies

Ao executar o script, você poderá usar git clone, push… e isso funcionará.

source.repos.updateProjectConfig

Com essa permissão é possível desativar a proteção padrão do Source Repositories que impede o upload de código contendo Private Keys:

Desativar pushblock e modificar a configuração do pub/sub ```bash gcloud source project-configs update --disable-pushblock ``` Você também pode configurar um tópico pub/sub diferente ou até 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