GCP - KMS Privesc
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
KMS
Informations sur KMS :
Notez qu'avec KMS, les permissions ne sont pas seulement héritées des Organisations, Dossiers et Projets, mais aussi des Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
Vous pouvez utiliser cette permission pour décrypter des informations avec la clé sur laquelle vous avez cette permission.
gcloud kms decrypt \
--location=[LOCATION] \
--keyring=[KEYRING_NAME] \
--key=[KEY_NAME] \
--version=[KEY_VERSION] \
--ciphertext-file=[ENCRYPTED_FILE_PATH] \
--plaintext-file=[DECRYPTED_FILE_PATH]
cloudkms.cryptoKeys.setIamPolicy
Un attaquant avec cette permission pourrait s'accorder des permissions pour utiliser la clé afin de déchiffrer des informations.
gcloud kms keys add-iam-policy-binding [KEY_NAME] \
--location [LOCATION] \
--keyring [KEYRING_NAME] \
--member [MEMBER] \
--role roles/cloudkms.cryptoKeyDecrypter
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Voici une explication conceptuelle de la façon dont cette délégation fonctionne :
- Le Compte de Service A a un accès direct pour déchiffrer en utilisant une clé spécifique dans KMS.
- Le Compte de Service B se voit accorder la permission
useToDecryptViaDelegation
. Cela lui permet de demander à KMS de déchiffrer des données au nom du Compte de Service A.
L'utilisation de cette permission est implicite dans la façon dont le service KMS vérifie les permissions lorsqu'une demande de déchiffrement est faite.
Lorsque vous faites une demande de déchiffrement standard en utilisant l'API Google Cloud KMS (en Python ou dans un autre langage), le service vérifie si le compte de service demandeur a les permissions nécessaires. Si la demande est faite par un compte de service avec la permission useToDecryptViaDelegation
, KMS vérifie si ce compte est autorisé à demander le déchiffrement au nom de l'entité qui possède la clé.
Configuration pour la Délégation
- Définir le Rôle Personnalisé : Créez un fichier YAML (par exemple,
custom_role.yaml
) qui définit le rôle personnalisé. Ce fichier doit inclure la permissioncloudkms.cryptoKeyVersions.useToDecryptViaDelegation
. Voici un exemple de ce à quoi ce fichier pourrait ressembler :
title: "KMS Decryption via Delegation"
description: "Allows decryption via delegation"
stage: "GA"
includedPermissions:
- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
- Créer le rôle personnalisé en utilisant le gcloud CLI : Utilisez la commande suivante pour créer le rôle personnalisé dans votre projet Google Cloud :
gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml
Remplacez [YOUR_PROJECT_ID]
par l'ID de votre projet Google Cloud.
- Accorder le rôle personnalisé à un compte de service : Assignez votre rôle personnalisé à un compte de service qui utilisera cette autorisation. Utilisez la commande suivante :
# Give this permission to the service account to impersonate
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[SERVICE_ACCOUNT_B_EMAIL]" \
--role "projects/[PROJECT_ID]/roles/[CUSTOM_ROLE_ID]"
# Give this permission over the project to be able to impersonate any SA
gcloud projects add-iam-policy-binding [YOUR_PROJECT_ID] \
--member="serviceAccount:[SERVICE_ACCOUNT_EMAIL]" \
--role="projects/[YOUR_PROJECT_ID]/roles/kms_decryptor_via_delegation"
Remplacez [YOUR_PROJECT_ID]
et [SERVICE_ACCOUNT_EMAIL]
par l'ID de votre projet et l'email du compte de service, respectivement.
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.