GCP - KMS Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Info sur KMS :
GCP - KMS EnumNotez que dans 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.
cloudkms.cryptoKeys.setIamPolicy
Un attaquant ayant cette autorisation pourrait s'accorder des permissions pour utiliser la clé afin de déchiffrer des informations.
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 manière dont le service KMS vérifie les permissions lorsqu'une demande de déchiffrement est faite.
Lorsque vous effectuez 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é.
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 permission cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
. Voici un exemple de ce à quoi ce fichier pourrait ressembler :
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 :
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 :
Remplacez [YOUR_PROJECT_ID]
et [SERVICE_ACCOUNT_EMAIL]
par l'ID de votre projet et l'email du compte de service, respectivement.
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)