GCP - KMS Privesc
Reading time: 4 minutes
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 дозволи не тільки наследуються від Організацій, Папок і Проектів, але також від Ключових наборів.
cloudkms.cryptoKeyVersions.useToDecrypt
Ви можете використовувати цей дозвіл для дешифрування інформації за допомогою ключа, на який у вас є цей дозвіл.
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
Зловмисник з цим дозволом міг би наділити себе правами на використання ключа для розшифровки інформації.
gcloud kms keys add-iam-policy-binding [KEY_NAME] \
--location [LOCATION] \
--keyring [KEYRING_NAME] \
--member [MEMBER] \
--role roles/cloudkms.cryptoKeyDecrypter
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Ось концептуальний розбір того, як працює це делегування:
- Сервісний обліковий запис A має прямий доступ до розшифровки за допомогою конкретного ключа в KMS.
- Сервісний обліковий запис B отримує дозвіл
useToDecryptViaDelegation
. Це дозволяє йому запитувати KMS на розшифровку даних від імені Сервісного облікового запису A.
Використання цього дозволу є неявним у способі, яким сервіс KMS перевіряє дозволи під час подання запиту на розшифровку.
Коли ви робите стандартний запит на розшифровку за допомогою Google Cloud KMS API (на Python або іншій мові), сервіс перевіряє, чи має запитуючий сервісний обліковий запис необхідні дозволи. Якщо запит подається сервісним обліковим записом з дозволом useToDecryptViaDelegation
, KMS перевіряє, чи дозволено цьому обліковому запису запитувати розшифровку від імені суб'єкта, який володіє ключем.
Налаштування для делегування
- Визначте користувацьку роль: Створіть файл YAML (наприклад,
custom_role.yaml
), який визначає користувацьку роль. Цей файл повинен містити дозвілcloudkms.cryptoKeyVersions.useToDecryptViaDelegation
. Ось приклад того, як може виглядати цей файл:
title: "KMS Decryption via Delegation"
description: "Allows decryption via delegation"
stage: "GA"
includedPermissions:
- "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation"
- Створіть користувацьку роль за допомогою gcloud CLI: Використовуйте наступну команду, щоб створити користувацьку роль у вашому проекті Google Cloud:
gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml
Замініть [YOUR_PROJECT_ID]
на ідентифікатор вашого проекту Google Cloud.
- Надайте користувацьку роль обліковому запису служби: Призначте вашу користувацьку роль обліковому запису служби, який буде використовувати цей дозвіл. Використовуйте наступну команду:
# 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]
на ваш ідентифікатор проєкту та електронну пошту облікового запису служби відповідно.
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.