GCP - Sourcerepos Privesc
Dépôts Source
Pour plus d'informations sur les Dépôts 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 autorisation pourra écrire du code à l'intérieur d'un dépôt cloné avec gcloud source repos clone <repo>
. Notez cependant que cette autorisation ne peut pas être attachée à des rôles personnalisés, elle doit donc être donnée via un rôle prédéfini tel que :
Propriétaire
Éditeur
Administrateur de dépôt source (
roles/source.admin
)Rédacteur de dépôt source (
roles/source.writer
)
Pour écrire, il suffit d'exécuter un git push
.
source.repos.setIamPolicy
source.repos.setIamPolicy
Avec cette autorisation, un attaquant pourrait s'octroyer les autorisations 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 du dépôt source dans la console web. Cela envoie une requête POST à /v1/sshKeys:add
et peut être configuré dans 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 utiliser les commandes git
comme d'habitude.
Identifiants Manuels
Il est possible de créer des identifiants manuels pour accéder aux dépôts de code source :
En cliquant sur le premier lien, vous serez redirigé vers https://source.developers.google.com/auth/start?scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform&state&authuser=3
Ce qui déclenchera une invite d'autorisation Oauth pour donner accès au Google Cloud Development. Vous aurez donc besoin soit des identifiants de l'utilisateur ou d'une session ouverte dans le navigateur pour cela.
Cela vous dirigera vers une page avec un script bash à exécuter et configurer un cookie git dans $HOME/.gitcookies
En exécutant le script, vous pourrez ensuite utiliser git clone, push... et cela fonctionnera.
source.repos.updateProjectConfig
source.repos.updateProjectConfig
Avec cette autorisation, il est possible de désactiver la protection par défaut des dépôts de code source 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 :
Dernière mise à jour