GCP - KMS Privesc
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
KMS
Informacje o KMS:
Zauważ, że w KMS uprawnienia są nie tylko dziedziczone z Orgs, Folders i Projects, ale także z Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
Możesz użyć tego uprawnienia, aby odszyfrować dane przy użyciu klucza, dla którego posiadasz to uprawnienie.
Odszyfrowanie danych przy użyciu klucza KMS
```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
Atakujący z tym uprawnieniem mógłby przyznać sobie uprawnienia do używania klucza w celu odszyfrowania informacji.
Przyznaj sobie rolę decryptera KMS
```bash gcloud kms keys add-iam-policy-binding [KEY_NAME] \ --location [LOCATION] \ --keyring [KEYRING_NAME] \ --member [MEMBER] \ --role roles/cloudkms.cryptoKeyDecrypter ```cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Poniżej koncepcyjne wyjaśnienie, jak działa ta delegacja:
- Service Account A ma bezpośredni dostęp do odszyfrowywania przy użyciu konkretnego klucza w KMS.
- Service Account B otrzymuje uprawnienie
useToDecryptViaDelegation. Pozwala mu to zażądać od KMS odszyfrowania danych w imieniu Service Account A.
Użycie tego uprawnienia jest implicite w sposobie, w jaki usługa KMS weryfikuje uprawnienia, gdy wykonywane jest żądanie odszyfrowania.
Gdy wykonujesz standardowe żądanie odszyfrowania za pomocą Google Cloud KMS API (w Pythonie lub innym języku), usługa sprawdza, czy wysyłające żądanie service account ma wymagane uprawnienia. Jeśli żądanie pochodzi od service account z uprawnieniem useToDecryptViaDelegation, KMS weryfikuje, czy to konto ma prawo żądać odszyfrowania w imieniu podmiotu, który jest właścicielem klucza.
Konfiguracja delegacji
- Zdefiniuj niestandardową rolę: Utwórz plik YAML (np.
custom_role.yaml), który definiuje niestandardową rolę. Plik ten powinien zawierać uprawnieniecloudkms.cryptoKeyVersions.useToDecryptViaDelegation. Oto przykład, jak może wyglądać taki plik:
Definicja niestandardowej roli YAML
```yaml title: "KMS Decryption via Delegation" description: "Allows decryption via delegation" stage: "GA" includedPermissions: - "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation" ```- Utwórz niestandardową rolę przy użyciu gcloud CLI: Użyj następującego polecenia, aby utworzyć niestandardową rolę w swoim projekcie Google Cloud:
Utwórz niestandardową rolę KMS
```bash gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml ``` Zastąp `[YOUR_PROJECT_ID]` identyfikatorem projektu Google Cloud.- Przypisz niestandardową rolę do konta usługi: Przypisz swoją niestandardową rolę do konta usługi, które będzie korzystać z tego uprawnienia. Użyj następującego polecenia:
Przypisz niestandardową rolę do konta usługi
```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”
Zastąp [YOUR_PROJECT_ID] i [SERVICE_ACCOUNT_EMAIL] odpowiednio identyfikatorem projektu i adresem e-mail konta usługi.
</details>
> [!TIP]
> Ucz się & ćwicz AWS Hacking:<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;">\
> Ucz się & ćwicz GCP Hacking: <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;">\
> Ucz się & ćwicz Az Hacking: <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>Wspieraj HackTricks</summary>
>
> - Sprawdź [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Dołącz do** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) lub [**telegram group**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Podziel się hacking tricks, zgłaszając PRy do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>
HackTricks Cloud

