GCP - Sourcerepos Privesc

Support HackTricks

Dépôts de code source

Pour plus d'informations sur les dépôts de code source, consultez :

GCP - Source Repositories Enum

source.repos.get

Avec cette autorisation, il est possible de télécharger le dépôt localement :

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

source.repos.update

Un principal avec cette permission sera capable d'écrire du code à l'intérieur d'un dépôt cloné avec gcloud source repos clone <repo>. Mais notez que cette permission ne peut pas être attachée à des rôles personnalisés, elle doit donc être donnée via un rôle prédéfini comme :

  • Propriétaire

  • Éditeur

  • Administrateur de dépôt source (roles/source.admin)

  • Écrivain de dépôt source (roles/source.writer)

Pour écrire, il suffit d'effectuer un git push régulier.

source.repos.setIamPolicy

Avec cette permission, un attaquant pourrait se donner les permissions précédentes.

Accès aux secrets

Si l'attaquant a accès aux secrets où les jetons sont stockés, il pourra les voler. Pour plus d'informations sur la façon d'accéder à un secret, consultez :

GCP - Secretmanager Privesc

Ajouter des clés SSH

Il est possible d'ajouter des clés ssh au projet de dépôt source dans la console web. Cela effectue une requête POST à /v1/sshKeys:add et peut être configuré sur https://source.cloud.google.com/user/ssh_keys

Une fois votre clé ssh configurée, vous pouvez accéder à un dépôt avec :

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

Et ensuite, utilisez les commandes git comme d'habitude.

Identifiants Manuels

Il est possible de créer des identifiants manuels pour accéder aux Source Repositories :

En cliquant sur le premier lien, vous serez dirigé vers https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3

Ce qui affichera une invite d'autorisation Oauth pour donner accès à Google Cloud Development. Vous aurez donc besoin soit des identifiants de l'utilisateur, soit d'une session ouverte dans le navigateur pour cela.

Cela vous enverra à une page avec un script bash à exécuter et à configurer un cookie git dans $HOME/.gitcookies

En exécutant le script, vous pouvez ensuite utiliser git clone, push... et cela fonctionnera.

source.repos.updateProjectConfig

Avec cette permission, il est possible de désactiver la protection par défaut des Source Repositories pour ne pas télécharger de code contenant des clés privées :

gcloud source project-configs update --disable-pushblock

Vous pouvez également configurer un sujet pub/sub différent ou même le désactiver complètement :

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

Last updated