GCP - KMS Privesc
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
KMS
Інформація про KMS:
Зверніть увагу, що в KMS permission не лише inherited від Orgs, Folders і Projects, але й від Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
Ви можете використовувати цей permission, щоб decrypt information with the key над яким у вас є цей permission.
Decrypt data using KMS key
```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
Зловмисник із цим дозволом може надати собі дозволи для використання ключа для розшифрування інформації.
Надати собі роль KMS decrypter
```bash gcloud kms keys add-iam-policy-binding [KEY_NAME] \ --location [LOCATION] \ --keyring [KEYRING_NAME] \ --member [MEMBER] \ --role roles/cloudkms.cryptoKeyDecrypter ```cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Ось концептуальне пояснення того, як працює це делегування:
- Service Account A має прямий доступ для дешифрування з використанням певного ключа в KMS.
- Service Account B отримує дозвіл
useToDecryptViaDelegation. Це дозволяє йому запитувати у KMS дешифрування даних від імені Service Account A.
Використання цього дозволу є неявним у тому, як сервіс KMS перевіряє права під час виконання запиту на дешифрування.
Коли ви робите стандартний запит на дешифрування через Google Cloud KMS API (у Python або іншій мові), сервіс перевіряє, чи має запитуваний обліковий запис сервісу необхідні дозволи. Якщо запит здійснюється обліковим записом сервісу з дозволом useToDecryptViaDelegation, KMS перевіряє, чи дозволено цьому обліковому запису запитувати дешифрування від імені власника ключа.
Налаштування делегування
- Створити кастомну роль: Створіть YAML-файл (наприклад,
custom_role.yaml), який визначає кастомну роль. У цьому файлі має бути включено дозвілcloudkms.cryptoKeyVersions.useToDecryptViaDelegation. Ось приклад того, як може виглядати цей файл:
Визначення YAML кастомної ролі
```yaml title: "KMS Decryption via Delegation" description: "Allows decryption via delegation" stage: "GA" includedPermissions: - "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation" ```- Створіть користувацьку роль за допомогою gcloud CLI: Використайте наступну команду, щоб створити користувацьку роль у вашому проекті Google Cloud:
Створити користувацьку роль KMS
```bash gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml ``` Замініть `[YOUR_PROJECT_ID]` на ідентифікатор вашого проекту Google Cloud.- Надати користувацьку роль сервісному акаунту: Призначте вашу користувацьку роль сервісному акаунту, який використовуватиме цей дозвіл. Використайте наступну команду:
Надати користувацьку роль сервісному акаунту
```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] та [SERVICE_ACCOUNT_EMAIL] на ідентифікатор вашого проєкту та електронну адресу сервісного акаунта відповідно.
</details>
> [!TIP]
> Вивчайте та практикуйте AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Вивчайте та практикуйте GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Вивчайте та практикуйте Azure Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Підтримка HackTricks</summary>
>
> - Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
> - **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
>
> </details>
HackTricks Cloud

