GCP - KMS Privesc

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

KMS

Informacije o KMS-u:

pageGCP - KMS Enum

Imajte na umu da u KMS-u dozvole nisu samo nasleđene od Organizacija, Foldera i Projekata, već i od Keyring-ova.

cloudkms.cryptoKeyVersions.useToDecrypt

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

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 ovlašćenjem može dodeliti sebi ovlašćenja za upotrebu ključa za dešifrovanje informacija.

gcloud kms keys add-iam-policy-binding [KEY_NAME] \
--location [LOCATION] \
--keyring [KEYRING_NAME] \
--member [MEMBER] \
--role roles/cloudkms.cryptoKeyDecrypter

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

Evo konceptualne razrade kako ova delegacija funkcioniše:

  1. Servisni nalog A ima direktni pristup za dešifrovanje koristeći određeni ključ u KMS-u.

  2. Servisni nalog B je dobio dozvolu useToDecryptViaDelegation. Ovo mu omogućava da zahteva od KMS-a da dešifruje podatke u ime Servisnog naloga A.

Korišćenje ove dozvole je implicitno u načinu na koji KMS proverava dozvole prilikom zahteva 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 servisni nalog koji je napravio zahtev ima potrebne dozvole. Ako zahtev napravi servisni nalog sa dozvolom useToDecryptViaDelegation, KMS proverava da li je ovom nalogu dozvoljeno da zahteva dešifrovanje u ime entiteta koji je vlasnik ključa.

Priprema za delegaciju

  1. Definišite prilagođenu ulogu: Kreirajte 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 bi ovaj fajl mogao izgledati:

title: "KMS Decryption via Delegation"
description: "Allows decryption via delegation"
stage: "GA"
includedPermissions:
- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
  1. Kreiranje prilagođene uloge pomoću gcloud CLI-a: Koristite sledeću komandu za kreiranje prilagođene uloge u vašem Google Cloud projektu:

gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml

Zamenite [YOUR_PROJECT_ID] sa ID-em vašeg Google Cloud projekta.

  1. Dodelite prilagođenu ulogu servisnom nalogu: Dodelite prilagođenu ulogu servisnom nalogu koji će koristiti ovo ovlašćenje. Koristite sledeću komandu:

# 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 ID-jem vašeg projekta i emailom servisnog naloga, redom.

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini da podržite HackTricks:

Last updated