GCP - Sourcerepos Privesc

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Source Repositories

Pour plus d’informations sur Source Repositories, consultez :

GCP - Source Repositories Enum

source.repos.get

Avec cette permission, il est possible de télécharger le repository localement :

Clone source repository ```bash gcloud source repos clone --project= ```

source.repos.update

Un principal disposant de cette permission pourra é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 rattachée à des rôles personnalisés, elle doit donc être accordée via un rôle prédéfini tel que :

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

Pour écrire, il suffit d’effectuer un git push classique.

source.repos.setIamPolicy

Avec cette permission, un attaquant pourrait s’accorder les permissions précédentes.

Accès aux secrets

Si l’attaquant a accès aux secrets où les tokens 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 Source Repository dans la console web. Cela effectue une requête POST vers /v1/sshKeys:add et peut être configuré sur https://source.cloud.google.com/user/ssh_keys

Une fois votre clé SSH définie, vous pouvez accéder à un dépôt avec :

Cloner le dépôt via SSH ```bash git clone ssh://username@domain.com@source.developers.google.com:2022/p//r/ ```

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 l’accès à Google Cloud Development. Vous aurez donc besoin soit des credentials de l’utilisateur soit d’une session ouverte dans le navigateur pour cela.

Cela vous amènera à une page contenant un bash script à exécuter et configurant un cookie git dans $HOME/.gitcookies

En exécutant le script, vous pourrez 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 de Source Repositories qui empêche l’upload de code contenant des Private Keys :

Désactiver pushblock et modifier la configuration pub/sub ```bash gcloud source project-configs update --disable-pushblock ``` Vous pouvez également configurer un pub/sub topic différent ou même le désactiver complètement : ```bash gcloud source project-configs update --remove-topic=REMOVE_TOPIC gcloud source project-configs update --remove-topic=UPDATE_TOPIC ```

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks