GCP - Sourcerepos Privesc

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Source Repositories

Para más información sobre Source Repositories consulta:

GCP - Source Repositories Enum

source.repos.get

Con este permiso es posible descargar el repositorio localmente:

Clonar el repositorio ```bash gcloud source repos clone --project= ```

source.repos.update

Un principal con este permiso podrá escribir código dentro de un repositorio clonado con gcloud source repos clone <repo>. Pero ten en cuenta que este permiso no puede asignarse a roles personalizados, por lo que debe otorgarse mediante un rol predefinido como:

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

Para escribir, basta con realizar un git push.

source.repos.setIamPolicy

Con este permiso un atacante podría concederse a sí mismo los permisos anteriores.

Secret access

Si el atacante tiene acceso a los secretos donde se almacenan los tokens, podrá robarlos. Para más información sobre cómo acceder a un secret consulta:

GCP - Secretmanager Privesc

Add SSH keys

Es posible añadir ssh keys al proyecto de Source Repository desde la consola web. Hace una petición POST a /v1/sshKeys:add y puede configurarse en https://source.cloud.google.com/user/ssh_keys

Una vez que tu clave SSH esté configurada, puedes acceder a un repositorio con:

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

Y luego usa los comandos git como de costumbre.

Credenciales manuales

Es posible crear credenciales manuales para acceder a Source Repositories:

Al hacer clic en el primer enlace serás dirigido a https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3

Lo cual mostrará un Oauth authorization prompt para otorgar acceso a Google Cloud Development. Por tanto, necesitarás o bien las credenciales del usuario o bien una sesión abierta en el navegador.

Esto te llevará a una página con un bash script to execute que configura una cookie de git en $HOME/.gitcookies

Al ejecutar el script podrás usar git clone, push… y funcionará.

source.repos.updateProjectConfig

Con este permiso es posible desactivar la protección por defecto de Source Repositories que evita subir código que contenga Private Keys:

Disable pushblock and modify pub/sub configuration ```bash gcloud source project-configs update --disable-pushblock ``` También puedes configurar un topic pub/sub diferente o incluso desactivarlo por completo: ```bash gcloud source project-configs update --remove-topic=REMOVE_TOPIC gcloud source project-configs update --remove-topic=UPDATE_TOPIC ```

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks