GCP - KMS Privesc
Tip
Lerne & übe AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Unterstütze HackTricks
- Sieh dir die Abonnementpläne an!
- Tritt der 💬 Discord group oder der telegram group bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs an die HackTricks und HackTricks Cloud GitHub-Repos einreichst.
KMS
Informationen zu KMS:
Beachte, dass in KMS die Berechtigungen nicht nur vererbt werden von Orgs, Folders und Projects, sondern auch von Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
Du kannst diese Berechtigung verwenden, um Daten mit dem Key zu entschlüsseln, für den du diese Berechtigung besitzt.
Daten mit KMS key entschlüsseln
```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
Ein Angreifer mit dieser Berechtigung könnte sich Berechtigungen geben, um den Schlüssel zur Entschlüsselung von Informationen zu verwenden.
Weise dir die KMS-Decrypter-Rolle zu
```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 eine konzeptionelle Übersicht, wie diese Delegation funktioniert:
- Service Account A hat direkten Zugriff, um mit einem bestimmten Key in KMS zu decrypten.
- Service Account B erhält die Berechtigung
useToDecryptViaDelegation. Dadurch kann es KMS anfragen, Daten im Auftrag von Service Account A zu decrypten.
Die Verwendung dieser Berechtigung ist implizit in der Art, wie der KMS-Service Berechtigungen prüft, wenn eine decryption-Anfrage gestellt wird.
Wenn Sie eine normale decryption-Anfrage über die Google Cloud KMS API (in Python oder einer anderen Sprache) stellen, prüft der Service ob das anfragende Service Account die notwendigen Berechtigungen hat. Wird die Anfrage von einem Service Account mit der useToDecryptViaDelegation-Berechtigung gestellt, verifiziert KMS, ob dieses Service Account berechtigt ist, eine decryption im Namen der Entität anzufordern, die den Key besitzt.
Einrichtung für Delegation
- Define the Custom Role: Erstellen Sie eine YAML-Datei (z. B.
custom_role.yaml), die die custom role definiert. Diese Datei sollte die Berechtigungcloudkms.cryptoKeyVersions.useToDecryptViaDelegationenthalten. Hier ein Beispiel, wie diese Datei aussehen könnte:
YAML-Definition der Custom Role
```yaml title: "KMS Decryption via Delegation" description: "Allows decryption via delegation" stage: "GA" includedPermissions: - "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation" ```- Erstelle die benutzerdefinierte Rolle mit der gcloud CLI: Verwende den folgenden Befehl, um die benutzerdefinierte Rolle in deinem Google Cloud-Projekt zu erstellen:
Benutzerdefinierte KMS-Rolle erstellen
```bash gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml ``` Ersetze `[YOUR_PROJECT_ID]` durch deine Google Cloud-Projekt-ID.- Vergib die benutzerdefinierte Rolle an ein Servicekonto: Weise deine benutzerdefinierte Rolle einem Servicekonto zu, das diese Berechtigung verwenden wird. Verwende den folgenden Befehl:
Benutzerdefinierte Rolle an Servicekonto vergeben
```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”
Ersetze `[YOUR_PROJECT_ID]` und `[SERVICE_ACCOUNT_EMAIL]` durch deine Projekt-ID bzw. die E-Mail des Servicekontos.
</details>
> [!TIP]
> Lerne & übe 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;">\
> Lerne & übe 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;">\
> Lerne & übe 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>Unterstütze HackTricks</summary>
>
> - Sieh dir die [**Abonnementpläne**](https://github.com/sponsors/carlospolop) an!
> - **Tritt der** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) **oder der** [**telegram group**](https://t.me/peass) **bei oder folge uns auf** **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repos** einreichst.
>
> </details>
HackTricks Cloud

