GCP - KMS Privesc
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.
KMS
Informations sur KMS :
Notez que dans KMS, les permission ne sont pas seulement héritées des Orgs, Folders and Projects mais aussi des Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
You can use this permission to decrypt information with the key you have this permission over.
Décrypter des données en utilisant une clé KMS
```bash 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 disposant de cette permission pourrait sâaccorder des autorisations pour utiliser la clĂ© afin de dĂ©chiffrer des informations.
S'accorder le rÎle de déchiffreur KMS
```bash 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 du fonctionnement de cette délégation :
- Compte de service A dispose dâun accĂšs direct pour dĂ©chiffrer en utilisant une clĂ© spĂ©cifique dans KMS.
- 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 requĂȘte de dĂ©chiffrement est effectuĂ©e.
Lorsque vous effectuez une requĂȘte de dĂ©chiffrement standard en utilisant la Google Cloud KMS API (en Python ou un autre langage), le service vĂ©rifie si le compte de service demandeur dispose des permissions nĂ©cessaires. Si la requĂȘte est effectuĂ©e par un compte de service possĂ©dant 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Ă©.
Mise en place de la délégation
- Définir le rÎle personnalisé : Créez un fichier YAML (par ex.,
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 :
Définition YAML du rÎle personnalisé
```yaml 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 :
Créer un rÎle KMS personnalisé
```bash gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml ``` Remplacez [YOUR_PROJECT_ID] par l'ID de projet Google Cloud.- Accorder le rÎle personnalisé à un compte de service : Attribuez votre rÎle personnalisé à un compte de service qui utilisera cette permission. Utilisez la commande suivante :
Accorder le rÎle personnalisé au compte de service
```bash # 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 votre ID de projet et l'adresse e-mail du compte de service, respectivement.
</details>
> [!TIP]
> Apprenez & pratiquez AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Apprenez & pratiquez GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Apprenez & pratiquez Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Soutenez HackTricks</summary>
>
> - Consultez les [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Rejoignez le** đŹ [**Discord group**](https://discord.gg/hRep4RUj7f) ou le [**telegram group**](https://t.me/peass) ou **suivez-nous** sur **Twitter** đŠ [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Partagez des hacking tricks en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>
HackTricks Cloud

