GCP - Sourcerepos Privesc

Support HackTricks

Repositorios de Código

Para más información sobre los Repositorios de Código consulta:

source.repos.get

Con este permiso es posible descargar el repositorio localmente:

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

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 se puede adjuntar a roles personalizados, por lo que debe otorgarse a través de un rol predefinido como:

  • Owner

  • Editor

  • Source Repository Administrator (roles/source.admin)

  • Source Repository Writer (roles/source.writer)

Para escribir, simplemente realiza un git push regular.

source.repos.setIamPolicy

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

Acceso a secretos

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

Agregar claves SSH

Es posible agregar claves ssh al proyecto de Source Repository en la consola web. Realiza una solicitud POST a /v1/sshKeys:add y se puede configurar en https://source.cloud.google.com/user/ssh_keys

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

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

Y luego usa los comandos git como de costumbre.

Credenciales Manuales

Es posible crear credenciales manuales para acceder a los Repositorios de Código:

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

Lo que mostrará un mensaje de autorización Oauth para dar acceso a Google Cloud Development. Así que necesitarás ya sea las credenciales del usuario o una sesión abierta en el navegador para esto.

Esto te enviará a una página con un script bash para ejecutar y configurar 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 deshabilitar la protección predeterminada de los Repositorios de Código para no subir código que contenga Claves Privadas:

gcloud source project-configs update --disable-pushblock

También puedes configurar un tema pub/sub diferente o incluso desactivarlo por completo:

gcloud source project-configs update --remove-topic=REMOVE_TOPIC
gcloud source project-configs update --remove-topic=UPDATE_TOPIC
Apoya a HackTricks

Last updated