GCP - Cloud Build Enum
Informations de base
Google Cloud Build est une plateforme CI/CD gérée qui automatise la construction et les processus de publication de logiciels, s'intégrant avec des dépôts de code source et prenant en charge un large éventail de langages de programmation. Elle permet aux développeurs de construire, tester et déployer du code automatiquement tout en offrant la flexibilité de personnaliser les étapes de construction et les flux de travail.
Chaque déclencheur Cloud Build est lié à un dépôt Cloud ou directement connecté à un dépôt externe (Github, Bitbucket et Gitlab).
Je n'ai trouvé aucun moyen de voler le token Github/Bitbucket d'ici ou des dépôts Cloud car lorsque le dépôt est téléchargé, il est accessible via une URL https://source.cloud.google.com/ et Github n'est pas accessible par le client.
Événements
Le Cloud Build peut être déclenché si :
Pousser vers une branche : Spécifiez la branche
Pousser un nouveau tag : Spécifiez le tag
Pull request : Spécifiez la branche qui reçoit le PR
Invocation manuelle
Message Pub/Sub : Spécifiez le sujet
Événement Webhook : Exposera une URL HTTPS et la requête doit être authentifiée avec un secret
Exécution
Il y a 3 options :
Un yaml/json spécifiant les commandes à exécuter. Généralement :
/cloudbuild.yaml
Uniquement celui qui peut être spécifié “inline” dans la console web et dans le cli
Option la plus courante
Pertinent pour un accès non authentifié
Un Dockerfile à construire
Un Buildpack à construire
Permissions SA
Le compte de service a le champ cloud-platform
, donc il peut utiliser tous les privilèges. Si aucun SA n'est spécifié (comme lors de la soumission), le SA par défaut <proj-number>@cloudbuild.gserviceaccount.com
sera utilisé.
Par défaut, aucune permission n'est donnée mais il est assez facile d'en donner :
Approbations
Il est possible de configurer un Cloud Build pour exiger des approbations pour les exécutions de construction (désactivé par défaut).
Approbations PR
Lorsque le déclencheur est un PR, parce que tout le monde peut effectuer des PR sur des dépôts publics, il serait très dangereux de simplement permettre l'exécution du déclencheur avec n'importe quel PR. Par conséquent, par défaut, l'exécution ne sera automatique que pour les propriétaires et les collaborateurs, et pour exécuter le déclencheur avec d'autres PRs d'utilisateurs, un propriétaire ou un collaborateur doit commenter /gcbrun
.
Connexions & Dépôts
Des connexions peuvent être créées via :
GitHub : Cela affichera une invite OAuth demandant des permissions pour obtenir un token Github qui sera stocké dans le Secret Manager.
GitHub Enterprise : Il demandera d'installer une GithubApp. Un token d'authentification de votre hôte GitHub Enterprise sera créé et stocké dans ce projet en tant que secret du Secret Manager.
GitLab / Enterprise : Vous devez fournir le token d'accès API et le token d'accès API en lecture qui seront stockés dans le Secret Manager.
Une fois qu'une connexion est générée, vous pouvez l'utiliser pour lier des dépôts auxquels le compte Github a accès.
Cette option est disponible via le bouton :
Notez que les dépôts connectés par cette méthode sont uniquement disponibles dans les déclencheurs utilisant la 2ème génération.
Connecter un Dépôt
Ce n'est pas la même chose qu'une connexion
. Cela permet différentes manières d'obtenir l'accès à un dépôt Github ou Bitbucket mais ne génère pas un objet de connexion, mais génère un objet de dépôt (de 1ère génération).
Cette option est disponible via le bouton :
Stockage
Parfois, Cloud Build générera un nouveau stockage pour stocker les fichiers pour le déclencheur. Cela se produit par exemple dans l'exemple que GCP propose avec :
Un bucket de stockage appelé security-devbox_cloudbuild est créé pour stocker un .tgz
avec les fichiers à utiliser.
Obtenir un shell
Installer gcloud à l'intérieur de cloud build :
Enumeration
Vous pourriez trouver des informations sensibles dans les configurations de build et les journaux.
Escalade de Privilèges
GCP - Cloudbuild PrivescAccès Non Authentifié
GCP - Cloud Build Unauthenticated EnumPost Exploitation
GCP - Cloud Build Post ExploitationLast updated