GCP - KMS Privesc

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

KMS

Inligting oor KMS:

GCP - KMS Enum

Let daarop dat in KMS die toestemmings nie net geërf word van Orgs, Folders en Projects nie, maar ook van Keyrings.

cloudkms.cryptoKeyVersions.useToDecrypt

Jy kan hierdie toestemming gebruik om inligting met die sleutel te ontsleutel waarvoor jy hierdie toestemming het.

Ontsleutel data met KMS-sleutel ```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

An attacker met hierdie toestemming kan homself bevoegdhede gee om die sleutel te gebruik om inligting te decrypt.

Gee jouself die KMS decrypter role ```bash gcloud kms keys add-iam-policy-binding [KEY_NAME] \ --location [LOCATION] \ --keyring [KEYRING_NAME] \ --member [MEMBER] \ --role roles/cloudkms.cryptoKeyDecrypter ```

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

Hier is ’n konseptuele uiteensetting van hoe hierdie delegasie werk:

  1. Service Account A het direkte toegang om te ontsleutel met ’n spesifieke sleutel in KMS.
  2. Service Account B word die useToDecryptViaDelegation-toestemming gegee. Dit stel dit in staat om KMS te versoek om data namens Service Account A te ontsleutel.

Die gebruik van hierdie toestemming is implisiet in die manier waarop die KMS-diens toestemming kontroleer wanneer ’n ontsleutelingversoek gemaak word.

Wanneer jy ’n standaard ontsleutelingversoek maak met die Google Cloud KMS API (in Python of ’n ander taal), kyk die diens of die aanvraende service account die nodige toestemmings het. As die versoek gemaak is deur ’n service account met die useToDecryptViaDelegation-toestemming, verifieer KMS of hierdie service account toegelaat is om ontsleuteling namens die entiteit wat die sleutel besit te versoek.

Opstel vir delegasie

  1. Define the Custom Role: Skep ’n YAML-lĂȘer (bv. custom_role.yaml) wat die custom role definieer. Hierdie lĂȘer moet die cloudkms.cryptoKeyVersions.useToDecryptViaDelegation-toestemming insluit. Hier is ’n voorbeeld van hoe hierdie lĂȘer kan lyk:
Custom role YAML-definisie ```yaml title: "KMS Decryption via Delegation" description: "Allows decryption via delegation" stage: "GA" includedPermissions: - "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation" ```
  1. Skep die aangepaste rol met die gcloud CLI: Gebruik die volgende opdrag om die aangepaste rol in jou Google Cloud-projek te skep:
Skep aangepaste KMS-rol ```bash gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml ``` Vervang `[YOUR_PROJECT_ID]` met jou Google Cloud-projek-ID.
  1. Ken die pasgemaakte rol toe aan ’n diensrekening: Ken jou pasgemaakte rol toe aan ’n diensrekening wat hierdie toestemming sal gebruik. Gebruik die volgende opdrag:
Ken pasgemaakte rol toe aan diensrekening ```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”

Vervang [YOUR_PROJECT_ID] en [SERVICE_ACCOUNT_EMAIL] met jou projek-ID en die e-pos van die diensrekening, onderskeidelik.

</details>

> [!TIP]
> Leer & oefen 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;">\
> Leer & oefen 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;">\
> Leer & oefen 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>Ondersteun HackTricks</summary>
>
> - Kyk na die [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Sluit aan by die** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) of die [**telegram group**](https://t.me/peass) of **volg** ons op **Twitter** 🐩 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Deel hacking tricks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>