GCP - KMS Privesc
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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]
> Lernen & üben Sie AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Lernen & üben Sie GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Lernen & üben Sie Azure Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Unterstützen Sie HackTricks</summary>
>
> - Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
> - **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
>
> </details>
HackTricks Cloud

