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
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
KMS
KMS ile ilgili bilgi:
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:
- Service Account A, KMS’teki belirli bir anahtarı kullanarak doğrudan şifre çözme erişimine sahiptir.
- Service Account B’ye
useToDecryptViaDelegationizni 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
- Özel Rolü Tanımlayın: Özel rolü tanımlayan bir YAML dosyası oluşturun (ör.
custom_role.yaml). Bu dosyacloudkms.cryptoKeyVersions.useToDecryptViaDelegationiznini 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" ```- 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.- Ö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>
HackTricks Cloud

