GCP - KMS Privesc

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

KMS

KMS ile ilgili bilgi:

GCP - KMS Enum

KMS’de permission’lar sadece Orgs, Folders ve Projects’ten inherited olmaz; aynı zamanda Keyrings’ten de gelebilir.

cloudkms.cryptoKeyVersions.useToDecrypt

Bu permission’ı, sahip olduğunuz anahtarla decrypt information with the key yapmak için kullanabilirsiniz.

KMS anahtarı kullanarak veriyi decrypt etme ```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

Bu izne sahip bir saldırgan, bilgileri decrypt etmek için anahtarı kullanma izinlerini kendine verebilir.

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

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

Bu delege işleminin nasıl çalıştığına ilişkin kavramsal bir döküm:

  1. Service Account A, KMS’teki belirli bir anahtarı kullanarak doğrudan şifre çözme erişimine sahiptir.
  2. Service Account B’ye useToDecryptViaDelegation izni verilir. Bu, onun KMS’den, Service Account A adına verileri şifre çözmesini talep etmesine izin verir.

Bu iznin kullanımı, bir şifre çözme isteği yapıldığında KMS servisinin izinleri denetleme biçiminde dolaylıdır.

Google Cloud KMS API’sini kullanarak (Python veya başka bir dilde) standart bir şifre çözme isteği yaptığınızda, servis istekte bulunan service account’un gerekli izinlere sahip olup olmadığını kontrol eder. İstek useToDecryptViaDelegation iznine sahip bir service account tarafından yapılıyorsa, KMS bu hesabın anahtara sahip olan varlık adına şifre çözme talep etmesine izin verilip verilmediğini doğrular.

Delegasyon için Kurulum

  1. Özel Rolü Tanımlayın: Özel rolü tanımlayan bir YAML dosyası oluşturun (ör. custom_role.yaml). Bu dosya cloudkms.cryptoKeyVersions.useToDecryptViaDelegation iznini içermelidir. Dosyanın nasıl görünebileceğine dair bir örnek:
Özel rol YAML tanımı ```yaml title: "KMS Decryption via Delegation" description: "Allows decryption via delegation" stage: "GA" includedPermissions: - "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation" ```
  1. gcloud CLI kullanarak Özel Rolü Oluşturun: Aşağıdaki komutu kullanarak özel rolü Google Cloud projenizde oluşturun:
Özel KMS rolü oluştur ```bash gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml ``` `[YOUR_PROJECT_ID]` öğesini Google Cloud proje kimliğinizle değiştirin.
  1. Özel Rolü Bir Servis Hesabına Verin: Bu izni kullanacak servis hesabına özel rolünüzü atayın. Aşağıdaki komutu kullanın:
Grant custom role to service account ```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”

`[YOUR_PROJECT_ID]` ve `[SERVICE_ACCOUNT_EMAIL]`'i sırasıyla proje kimliğiniz ve servis hesabının e-posta adresi ile değiştirin.

</details>

> [!TIP]
> AWS Hacking'i öğrenin ve pratik yapın:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> GCP Hacking'i öğrenin ve pratik yapın: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Az Hacking'i öğrenin ve pratik yapın: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>HackTricks'i Destekleyin</summary>
>
> - [**Abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
> - **Katılın** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) veya [**telegram group**](https://t.me/peass) veya **Twitter**'da bizi **takip edin** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **PR göndererek hacking tricks paylaşın:** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>