GCP Pentesting
Informations de base
Avant de commencer le test de pénétration 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 configurations incorrectes et comment les exploiter.
Des concepts tels que la hiérarchie de l'organisation, les autorisations et d'autres concepts de base sont expliqués dans :
pageGCP - Basic InformationLaboratoires pour apprendre
Méthodologie du testeur de pénétration/équipe rouge 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 de l'équipe rouge, la première étape pour compromettre un environnement GCP est de parvenir à obtenir des informations d'identification. Voici quelques idées sur la façon de le faire :
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
Falsification de requête côté serveur avec accès à l'endpoint de métadonnées
Lecture de fichiers locaux
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
3e parties compromises
Employé interne
Ou en compromettant un service non authentifié exposé :
pageGCP - Unauthenticated Enum & AccessOu si vous effectuez une révision, vous pourriez simplement demander des informations d'identification avec ces rôles :
pageGCP - Permissions for a PentestAprès avoir réussi à obtenir des informations d'identification, vous devez savoir à qui appartiennent ces informations d'identification, et à quoi elles ont accès, vous devez donc effectuer une certaine é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 :
Énumération de l'organisation
Principaux & É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 forcer par la force brute pour les découvrir. Consultez comment effectuer l'énumération et la force brute dans :
pageGCP - IAM, Principals & Org Policies EnumMaintenant 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écouvrir quels services sont utilisés dans l'environnement. Dans la section suivante, vous pouvez consulter quelques façons d'énumérer certains services courants.
Énumération des Services
GCP propose une quantité impressionnante de services, sur la page suivante, vous trouverez des informations de base, des triches pour l'énumération, comment éviter la détection, obtenir la persistance, et d'autres astuces de post-exploitation à leur sujet :
pageGCP - ServicesNotez 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 davantage de services exposés aux utilisateurs non authentifiés, vous pourriez être en mesure de les exploiter :
pageGCP - Unauthenticated Enum & AccessÉlévation de Privilèges, Post-Exploitation & Persistance
La manière la plus courante une fois que vous avez obtenu certains identifiants cloud ou avez compromis un service s'exécutant dans un cloud est d'abuser des privilèges mal configurés que le compte compromis peut avoir. Ainsi, la première chose à 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 plus haut niveau de l'"Organisation" également.
pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - PersistenceServices Exposés Publiquement
En énumérant les services GCP, vous avez peut-être trouvé certains d'entre eux exposant des éléments sur Internet (ports VM/Containers, bases de données ou services de file d'attente, instantanés ou compartiments...). En tant que testeur d'intrusion/équipe rouge, vous devriez toujours vérifier si vous pouvez trouver des informations sensibles / vulnérabilités sur eux car ils pourraient vous fournir un accès supplémentaire au compte GCP.
Dans ce livre, vous devriez trouver des informations sur la façon de trouver des services GCP exposés et comment les vérifier. Pour savoir comment trouver des vulnérabilités dans les services réseau exposés, je vous recommande de rechercher le service spécifique dans :
Pivotage GCP <--> Workspace
Compromettre des principaux dans une plateforme pourrait permettre à un attaquant de compromettre l'autre, vérifiez-le dans :
pageGCP <--> Workspace PivotingOutils Automatiques
Dans la console GCloud, sur https://console.cloud.google.com/iam-admin/asset-inventory/dashboard, vous pouvez voir les ressources et les IAM utilisés par le projet.
Ici, vous pouvez voir les actifs pris en charge par cette API : https://cloud.google.com/asset-inventory/docs/supported-asset-types
Consultez les outils qui peuvent être utilisés dans plusieurs clouds ici](../pentesting-cloud-methodology.md).
gcp_scanner : Il s'agit d'un scanner de ressources GCP qui peut aider à déterminer quel niveau d'accès certaines informations d'identification possèdent sur GCP.
gcp_enum: Script Bash pour énumérer un environnement GCP en utilisant gcloud cli et sauvegarder les résultats dans un fichier.
GCP-IAM-Privilege-Escalation: Scripts pour énumérer les hauts privilèges IAM et pour escalader les privilèges dans GCP en les abusant (Je n'ai pas réussi à exécuter le script d'énumération).
Configuration & débogage de gcloud
Capturer le réseau gcloud, gsutil...
N'oubliez pas que vous pouvez utiliser le paramètre --log-http
avec la cli gcloud
pour afficher les requêtes effectuées par l'outil. Si vous ne voulez pas que les journaux masquent la valeur du jeton, utilisez gcloud config set log_http_redact_token false
De plus, pour intercepter la communication :
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 :
Références
Dernière mise à jour