GCP - KMS Privesc

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

KMS

Informacije o KMS-u:

GCP - KMS Enum

Imajte na umu da se u KMS-u dozvole ne nasleđuju samo iz Orgs, Folders i Projects, već i iz Keyrings.

cloudkms.cryptoKeyVersions.useToDecrypt

Možete koristiti ovu dozvolu da dešifrujete informacije pomoću ključa nad kojim imate ovu dozvolu.

Dekriptovanje podataka pomoću KMS ključa ```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

Napadač sa ovom dozvolom može sebi dodeliti dozvole da koristi ključ za dešifrovanje informacija.

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

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

Evo konceptualnog pregleda kako ova delegacija funkcioniše:

  1. Service Account A ima direktan pristup za dešifrovanje koristeći određeni ključ u KMS.
  2. Service Account B dobija dozvolu useToDecryptViaDelegation. Ovo mu omogućava da zahteva od KMS-a dešifrovanje podataka u ime Service Account A.

Korišćenje ove dozvole je implicitno u načinu na koji KMS servis proverava dozvole kada se izvrši zahtev za dešifrovanje.

Kada napravite standardni zahtev za dešifrovanje koristeći Google Cloud KMS API (u Pythonu ili nekom drugom jeziku), servis proverava da li Service Account koji podnosi zahtev ima potrebne dozvole. Ako je zahtev podnet od strane Service Account-a koji ima useToDecryptViaDelegation dozvolu, KMS proverava da li je tom nalogu dozvoljeno da zahteva dešifrovanje u ime entiteta koji poseduje ključ.

Setting Up for Delegation

  1. Definišite prilagođenu ulogu: Napravite YAML fajl (npr. custom_role.yaml) koji definiše prilagođenu ulogu. Ovaj fajl treba da uključuje dozvolu cloudkms.cryptoKeyVersions.useToDecryptViaDelegation. Evo primera kako taj fajl može da izgleda:
title: "KMS Decryption via Delegation"
description: "Allows decryption via delegation"
stage: "GA"
includedPermissions:
- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
  1. Kreirajte prilagođenu ulogu koristeći gcloud CLI: Upotrebite sledeću komandu да kreirate prilagođenu ulogu u vašem Google Cloud projektu:
Kreirajte prilagođenu KMS ulogu ```bash gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml ``` Zamenite `[YOUR_PROJECT_ID]` sa ID-jem vašeg Google Cloud projekta.
  1. Dodelite prilagođenu ulogu servisnom nalogu: Dodelite vašu prilagođenu ulogu servisnom nalogu koji će koristiti ovu dozvolu. Koristite sledeću komandu:
Dodelite prilagođenu ulogu servisnom nalogu ```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”

Zamenite `[YOUR_PROJECT_ID]` i `[SERVICE_ACCOUNT_EMAIL]` vašim project ID-jem, odnosno email adresom service account-a.

</details>

> [!TIP]
> Učite i vežbajte 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;">\
> Učite i vežbajte 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;">
> Učite i vežbajte 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>Podržite HackTricks</summary>
>
> - Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)!
> - **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
>
> </details>