GCP - KMS Privesc

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

KMS

KMS hakkında bilgi:

GCP - KMS Enum

KMS'de izinler, Orglar, Klasörler ve Projelerden miras alındığı gibi Anahtar Halkaları'ndan da miras alınır.

cloudkms.cryptoKeyVersions.useToDecrypt

Bu izni kullanarak, bu izne sahip olduğunuz anahtarla bilgileri şifre çözme işlemi yapabilirsiniz.

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

Bu izne sahip bir saldırgan, anahtarı kullanarak bilgileri şifrelemek için kendisine izin verebilir.

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

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

İşte bu yetkilendirme nasıl çalışırın kavramsal bir açıklaması:

  1. Hizmet Hesabı A, KMS'deki belirli bir anahtarı kullanarak şifrelemeyi doğrudan çözebilme yetkisine sahiptir.

  2. Hizmet Hesabı B, useToDecryptViaDelegation iznini alır. Bu, Hizmet Hesabı A adına KMS'den verileri çözme isteği yapabilmesine olanak tanır.

Bu izin, KMS hizmetinin izinleri kontrol ettiği şekilde örtük olarak kullanılır.

Google Cloud KMS API'sini (Python veya başka bir dilde) kullanarak standart bir çözme isteği yaptığınızda, hizmet isteği yapan hizmet hesabının gerekli izinlere sahip olup olmadığını kontrol eder. İstek, useToDecryptViaDelegation iznine sahip bir hizmet hesabı tarafından yapılıyorsa, KMS, bu hesabın anahtarı sahibi varlık adına çözme isteği yapmaya yetkili olup olmadığını doğrular.

Yetkilendirme için Kurulum

  1. Özel Rolü Tanımlayın: Özel rolü tanımlayan bir YAML dosyası oluşturun (örneğin, custom_role.yaml). Bu dosya, cloudkms.cryptoKeyVersions.useToDecryptViaDelegation iznini içermelidir. İşte bu dosyanın nasıl görünebileceğine dair bir örnek:

title: "KMS Decryption via Delegation"
description: "Allows decryption via delegation"
stage: "GA"
includedPermissions:
- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
  1. gcloud CLI kullanarak Özel Rol Oluşturma: Google Cloud projenizde özel rol oluşturmak için aşağıdaki komutu kullanın:

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

[YOUR_PROJECT_ID] yerine Google Cloud proje kimliğinizle değiştirin.

  1. Özel Rolü Bir Hizmet Hesabına Atama: Bu izni kullanacak bir hizmet hesabına özel rolünüzü atayın. Aşağıdaki komutu kullanın:

# 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"

[PROJE_IDNİZ] ve [HİZMET_HESABI_EMAILİ] ifadelerini sırasıyla proje kimliğinizle ve hizmet hesabının e-posta adresiyle değiştirin.

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated