GCP - KMS Privesc

Reading time: 4 minutes

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:

GCP - KMS Enum

Napomena da u KMS dozvole nisu samo nasleđene iz Organizacija, Foldera i Projekata, već i iz Keyrings.

cloudkms.cryptoKeyVersions.useToDecrypt

Možete koristiti ovu dozvolu da dekriptuјete informacije sa ključem nad kojim imate ovu dozvolu.

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 mogao bi da sebi dodeli dozvole da koristi ključ za dešifrovanje informacija.

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 dekripciju koristeći određeni ključ u KMS-u.
  2. Service Account B dobija dozvolu useToDecryptViaDelegation. Ovo mu omogućava da zatraži KMS da dekriptuje podatke u ime Service Account A.

Korišćenje ove dozvole je implicitno u načinu na koji KMS servis proverava dozvole kada se podnese zahtev za dekripciju.

Kada podnesete standardni zahtev za dekripciju koristeći Google Cloud KMS API (u Pythonu ili drugom jeziku), servis proverava da li traženi servisni nalog ima potrebne dozvole. Ako zahtev podnosi servisni nalog sa useToDecryptViaDelegation dozvolom, KMS proverava da li je ovaj nalog ovlašćen da zatraži dekripciju u ime entiteta koji poseduje ključ.

Podešavanje za Delegaciju

  1. Definišite Prilagođenu Ulogu: Kreirajte YAML datoteku (npr. custom_role.yaml) koja definiše prilagođenu ulogu. Ova datoteka treba da uključuje cloudkms.cryptoKeyVersions.useToDecryptViaDelegation dozvolu. Evo primera kako bi ova datoteka mogla izgledati:
yaml
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: Koristite sledeću komandu da kreirate prilagođenu ulogu u vašem Google Cloud projektu:
bash
gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml

Zamenite [YOUR_PROJECT_ID] sa vašim Google Cloud ID-jem projekta.

  1. Dodelite prilagođenu ulogu servisnom nalogu: Dodelite svoju prilagođenu ulogu servisnom nalogu koji će koristiti ovu dozvolu. Koristite sledeću komandu:
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] sa vašim ID-jem projekta i email adresom servisnog naloga, respektivno.

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