GCP Pentesting
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
Informations de base
Avant de commencer le pentesting dâun environnement GCP, il y a quelques choses de base que vous devez savoir sur son fonctionnement pour vous aider Ă comprendre ce que vous devez faire, comment trouver des erreurs de configuration et comment les exploiter.
Des concepts tels que la hiĂ©rarchie dâorganisation, les permissions et dâautres concepts de base sont expliquĂ©s dans :
Laboratoires pour apprendre
- https://gcpgoat.joshuajebaraj.com/
- https://github.com/ine-labs/GCPGoat
- https://github.com/lacioffi/GCP-pentest-lab/
- https://github.com/carlospolop/gcp_privesc_scripts
Méthodologie de Pentester/Red Team GCP
Pour auditer un environnement GCP, il est trÚs important de savoir : quels services sont utilisés, ce qui est exposé, qui a accÚs à quoi, et comment les services internes GCP et les services externes sont connectés.
Du point de vue dâune Red Team, le premier pas pour compromettre un environnement GCP est dâobtenir des identifiants. Voici quelques idĂ©es sur comment faire cela :
- Fuites sur github (ou similaire) - OSINT
- Ingénierie Sociale (Consultez la page Sécurité Workspace)
- Réutilisation de mot de passe (fuites de mots de passe)
- Vulnérabilités dans les applications hébergées sur GCP
- Server Side Request Forgery avec accÚs au point de terminaison des métadonnées
- Lecture de fichiers locaux
/home/USERNAME/.config/gcloud/*C:\Users\USERNAME\.config\gcloud\*- Tiers compromis
- Employé interne
Ou en compromettant un service non authentifié exposé :
GCP - Unauthenticated Enum & Access
Ou si vous faites une révision, vous pourriez simplement demander des identifiants avec ces rÎles :
GCP - Permissions for a Pentest
Note
AprÚs avoir réussi à obtenir des identifiants, vous devez savoir à qui appartiennent ces identifiants, et à quoi ils ont accÚs, donc vous devez effectuer une énumération de base :
ĂnumĂ©ration de base
SSRF
Pour plus dâinformations sur la façon dâĂ©numĂ©rer les mĂ©tadonnĂ©es GCP, consultez la page hacktricks suivante :
Whoami
Dans GCP, vous pouvez essayer plusieurs options pour essayer de deviner qui vous ĂȘtes :
#If you are inside a compromise machine
gcloud auth list
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=$(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/tokeninfo
gcloud auth print-identity-token #Get info from the token
#If you compromised a metadata token or somehow found an OAuth token
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=<token>" https://www.googleapis.com/oauth2/v1/tokeninfo
Vous pouvez Ă©galement utiliser le point de terminaison API /userinfo pour obtenir plus dâinformations sur lâutilisateur :
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth $(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/userinfo
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth <access_token>" https://www.googleapis.com/oauth2/v1/userinfo
ĂnumĂ©ration dâOrg
# Get organizations
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud resource-manager folders list --organization <org_number> # Get folders
gcloud projects list # Get projects
Principes & ĂnumĂ©ration IAM
Si vous avez suffisamment de permissions, vĂ©rifier les privilĂšges de chaque entitĂ© Ă lâintĂ©rieur du compte GCP vous aidera Ă comprendre ce que vous et dâautres identitĂ©s pouvez faire et comment escalader les privilĂšges.
Si vous nâavez pas suffisamment de permissions pour Ă©numĂ©rer IAM, vous pouvez les voler par force brute pour les dĂ©couvrir.
VĂ©rifiez comment faire lâĂ©numĂ©ration et la force brute dans :
GCP - IAM, Principals & Org Policies Enum
Note
Maintenant que vous avez des informations sur vos identifiants (et si vous ĂȘtes une Ă©quipe rouge, espĂ©rons que vous nâavez pas Ă©tĂ© dĂ©tectĂ©). Il est temps de dĂ©terminer quels services sont utilisĂ©s dans lâenvironnement.
Dans la section suivante, vous pouvez vĂ©rifier quelques façons dâĂ©numĂ©rer certains services courants.
ĂnumĂ©ration des Services
GCP a une quantitĂ© Ă©tonnante de services, dans la page suivante vous trouverez des informations de base, des cheatsheets dâĂ©numĂ©ration, comment Ă©viter la dĂ©tection, obtenir de la persistance, et dâautres astuces de post-exploitation Ă propos de certains dâentre eux :
Notez que vous nâavez pas besoin dâeffectuer tout le travail manuellement, ci-dessous dans ce post vous pouvez trouver une section sur les outils automatiques.
De plus, Ă ce stade, vous pourriez avoir dĂ©couvert plus de services exposĂ©s aux utilisateurs non authentifiĂ©s, vous pourriez ĂȘtre en mesure de les exploiter :
GCP - Unauthenticated Enum & Access
Escalade de PrivilĂšges, Post Exploitation & Persistance
La maniĂšre la plus courante une fois que vous avez obtenu des identifiants cloud ou que vous avez compromis un service fonctionnant Ă lâintĂ©rieur dâun cloud est dâabuser des privilĂšges mal configurĂ©s que le compte compromis peut avoir. Donc, la premiĂšre chose que vous devriez faire est dâĂ©numĂ©rer vos privilĂšges.
De plus, lors de cette Ă©numĂ©ration, rappelez-vous que les permissions peuvent ĂȘtre dĂ©finies au niveau le plus Ă©levĂ© de âlâOrganisationâ Ă©galement.
Services Exposés Publiquement
Lors de lâĂ©numĂ©ration des services GCP, vous pourriez avoir trouvĂ© certains dâentre eux exposant des Ă©lĂ©ments Ă Internet (ports VM/Containers, bases de donnĂ©es ou services de file dâattente, instantanĂ©s ou bucketsâŠ).
En tant que pentester/équipe rouge, vous devriez toujours vérifier si vous pouvez trouver des informations sensibles / des vulnérabilités sur eux car ils pourraient vous fournir un accÚs supplémentaire au compte AWS.
Dans ce livre, vous devriez trouver des informations sur comment trouver des services GCP exposés et comment les vérifier. Concernant comment trouver des vulnérabilités dans des services réseau exposés, je vous recommanderais de chercher le service spécifique dans :
GCP <â> Workspace Pivoting
Compromettre des principes dans une plateforme pourrait permettre Ă un attaquant de compromettre lâautre, vĂ©rifiez-le dans :
Outils Automatiques
- Dans la console GCloud, à https://console.cloud.google.com/iam-admin/asset-inventory/dashboard vous pouvez voir les ressources et IAM utilisés par projet.
- Ici, vous pouvez voir les actifs pris en charge par cette API : https://cloud.google.com/asset-inventory/docs/supported-asset-types
- VĂ©rifiez les outils qui peuvent ĂȘtre utilisĂ©s dans plusieurs clouds ici.
- gcp_scanner : Câest un scanner de ressources GCP qui peut aider Ă dĂ©terminer quel niveau dâaccĂšs certains identifiants possĂšdent sur GCP.
# Install
git clone https://github.com/google/gcp_scanner.git
cd gcp_scanner
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
# Execute with gcloud creds
python3 __main__.py -o /tmp/output/ -g "$HOME/.config/gcloud"
- gcp_enum : Script Bash pour énumérer un environnement GCP en utilisant gcloud cli et enregistrer les résultats dans un fichier.
- GCP-IAM-Privilege-Escalation : Scripts pour Ă©numĂ©rer les privilĂšges IAM Ă©levĂ©s et pour escalader les privilĂšges dans GCP en les abusant (je nâai pas pu faire fonctionner le script dâĂ©numĂ©ration).
- BF My GCP Permissions : Script pour forcer vos permissions.
gcloud config & debug
# Login so gcloud can use your credentials
gcloud auth login
gcloud config set project security-devbox
gcloud auth print-access-token
# Login so SDKs can use your user credentials
gcloud auth application-default login
gcloud auth application-default set-quota-project security-devbox
gcloud auth application-default print-access-token
# Update gcloud
gcloud components update
Capture gcloud, gsutil⊠réseau
Nâoubliez pas que vous pouvez utiliser le paramĂštre --log-http avec le gcloud cli pour imprimer les requĂȘtes que lâoutil effectue. Si vous ne voulez pas que les journaux masquent la valeur du token, utilisez gcloud config set log_http_redact_token false
De plus, pour intercepter la communication :
gcloud config set proxy/address 127.0.0.1
gcloud config set proxy/port 8080
gcloud config set proxy/type http
gcloud config set auth/disable_ssl_validation True
# If you don't want to completely disable ssl_validation use:
gcloud config set core/custom_ca_certs_file cert.pem
# Back to normal
gcloud config unset proxy/address
gcloud config unset proxy/port
gcloud config unset proxy/type
gcloud config unset auth/disable_ssl_validation
gcloud config unset core/custom_ca_certs_file
Configuration du jeton OAuth dans gcloud
Pour utiliser un jeton OAuth de compte de service exfiltré à partir du point de terminaison des métadonnées, vous pouvez simplement faire :
# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
gcloud projects list
# Via setup
echo "<token>" > /some/path/to/token
gcloud config set auth/access_token_file /some/path/to/token
gcloud projects list
gcloud config unset auth/access_token_file
Références
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

