GCP - Sourcerepos Privesc
Dépôts de code source
Pour plus d'informations sur les dépôts de code source, consultez :
source.repos.get
source.repos.get
Avec cette autorisation, il est possible de télécharger le dépôt localement :
source.repos.update
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
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 :
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 :
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
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 :
Vous pouvez également configurer un sujet pub/sub différent ou même le désactiver complètement :
Last updated