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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
KMS
Informacije o KMS:
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.
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.
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:
- Service Account A ima direktan pristup za dekripciju koristeći određeni ključ u KMS-u.
- 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
- Definišite Prilagođenu Ulogu: Kreirajte YAML datoteku (npr.
custom_role.yaml
) koja definiše prilagođenu ulogu. Ova datoteka treba da uključujecloudkms.cryptoKeyVersions.useToDecryptViaDelegation
dozvolu. Evo primera kako bi ova datoteka mogla izgledati:
title: "KMS Decryption via Delegation"
description: "Allows decryption via delegation"
stage: "GA"
includedPermissions:
- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
- Kreirajte Prilagođenu Ulogu Koristeći gcloud CLI: Koristite sledeću komandu da kreirate prilagođenu ulogu 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 vašim Google Cloud ID-jem projekta.
- Dodelite prilagođenu ulogu servisnom nalogu: Dodelite svoju prilagođenu ulogu servisnom nalogu koji će koristiti ovu dozvolu. 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 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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.