GCP Pentesting
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 mauvaises configurations et comment les exploiter.
Des concepts tels que la hiérarchie de l'organisation, les permissions et d'autres concepts de base sont expliqués dans :
GCP - Basic InformationLabs pour apprendre
Méthodologie GCP Pentester/Red Team
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 de GCP et les services externes sont connectés.
Du point de vue d'une Red Team, la première étape pour compromettre un environnement GCP est de réussir à obtenir des identifiants. Voici quelques idées pour y parvenir :
Fuites sur github (ou similaire) - OSINT
Ingénierie sociale (Consultez la page Workspace Security)
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 fichier local
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
3ème parties compromises
Employé interne
Ou en compromettant un service non authentifié exposé :
GCP - Unauthenticated Enum & AccessOu si vous effectuez une revue, vous pouvez simplement demander des identifiants avec ces rôles :
GCP - Permissions for a PentestAprès avoir réussi à obtenir des identifiants, vous devez savoir à qui appartiennent ces identifiants, et à quoi ils ont accès, vous devez donc 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 deviner qui vous êtes :
Énumération d'Organisation
Principals & IAM Enumeration
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 assez 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 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 vérifier quelques façons d'énumérer certains services courants.
Services Enumeration
GCP dispose d'une quantité impressionnante de services, sur 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 :
GCP - ServicesNotez que vous n'avez pas besoin de faire 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 & AccessPrivilege Escalation, Post Exploitation & Persistence
La manière la plus courante, une fois que vous avez obtenu des identifiants cloud ou compromis un service fonctionnant dans un cloud, est d'abuser des privilèges mal configurés que le compte compromis peut avoir. Donc, la première chose que vous devez faire est d'énumérer vos privilèges.
De plus, pendant cette énumération, rappelez-vous que les permissions peuvent être définies au niveau le plus élevé de "l'Organisation" également.
GCP - Privilege EscalationGCP - Post ExploitationGCP - PersistencePublicly Exposed Services
Lors de l'énumération des services GCP, vous pourriez en avoir trouvé certains exposant des éléments à Internet (ports VM/Containers, bases de données ou services de file d'attente, snapshots ou buckets...). En tant que pentester/équipe rouge, vous devez 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 AWS.
Dans ce livre, vous devriez trouver des informations sur comment 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 chercher le service spécifique dans :
GCP <--> Workspace Pivoting
Compromettre des principals sur une plateforme pourrait permettre à un attaquant de compromettre l'autre, vérifiez-le dans :
GCP <--> Workspace PivotingAutomatic Tools
Dans la console GCloud, sur 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 le niveau d'accès que possèdent certains identifiants sur GCP.
gcp_enum : Script Bash pour énumérer un environnement GCP en utilisant gcloud cli et en sauvegardant 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 bruteforcer vos permissions.
gcloud config & debug
Capture gcloud, gsutil... network
N'oubliez pas que vous pouvez utiliser le paramètre --log-http
avec l'outil gcloud
pour imprimer les requêtes que l'outil effectue. 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 :
OAuth token configure in gcloud
Pour utiliser un jeton OAuth de compte de service exfiltré depuis le point de terminaison des métadonnées, vous pouvez simplement faire :
Références
Last updated