GCP - KMS Privesc
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
KMS
Informações sobre KMS:
Observe que no KMS as permissões não são apenas herdadas de Orgs, Folders and Projects mas também de Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
Você pode usar essa permissão para descriptografar informações com a chave sobre a qual você tem essa permissão.
Descriptografar dados usando a chave 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
Um atacante com essa permissão poderia conceder a si mesmo permissões para usar a chave para descriptografar informações.
Grant yourself KMS decrypter role
```bash gcloud kms keys add-iam-policy-binding [KEY_NAME] \ --location [LOCATION] \ --keyring [KEYRING_NAME] \ --member [MEMBER] \ --role roles/cloudkms.cryptoKeyDecrypter ```cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Segue um resumo conceitual de como essa delegação funciona:
- Conta de Serviço A tem acesso direto para descriptografar usando uma chave específica no KMS.
- Conta de Serviço B tem a permissão
useToDecryptViaDelegationconcedida. Isso permite que ela solicite ao KMS que descriptografe dados em nome da Conta de Serviço A.
O uso desta permissão é implícito na forma como o serviço KMS verifica permissões quando um pedido de descriptografia é realizado.
Quando você faz uma solicitação padrão de descriptografia usando a Google Cloud KMS API (em Python ou outra linguagem), o serviço verifica se a conta de serviço que está solicitando possui as permissões necessárias. Se o pedido for feito por uma conta de serviço com a permissão useToDecryptViaDelegation, o KMS verifica se essa conta está autorizada a solicitar a descriptografia em nome da entidade que possui a chave.
Configurando para Delegação
- Defina a função personalizada: Crie um arquivo YAML (por exemplo,
custom_role.yaml) que defina a função personalizada. Esse arquivo deve incluir a permissãocloudkms.cryptoKeyVersions.useToDecryptViaDelegation. A seguir um exemplo de como esse arquivo pode ser:
Definição YAML da função personalizada
```yaml title: "KMS Decryption via Delegation" description: "Allows decryption via delegation" stage: "GA" includedPermissions: - "cloudkms.cryptoKeyVersions.useToDecryptViaDelegation" ```- Crie a Função Personalizada Usando o gcloud CLI: Use o seguinte comando para criar a função personalizada no seu projeto Google Cloud:
Criar função KMS personalizada
```bash gcloud iam roles create kms_decryptor_via_delegation --project [YOUR_PROJECT_ID] --file custom_role.yaml ``` Substitua `[YOUR_PROJECT_ID]` pelo ID do seu projeto Google Cloud.- Conceda o custom role a uma service account: Atribua seu custom role a uma service account que usará essa permissão. Use o seguinte comando:
Conceder custom role à 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”
Substitua `[YOUR_PROJECT_ID]` e `[SERVICE_ACCOUNT_EMAIL]` pelo ID do seu projeto e pelo email da service account, respectivamente.
</details>
> [!TIP]
> Aprenda e pratique Hacking AWS:<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;">\
> Aprenda e pratique Hacking GCP: <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;">
> Aprenda e pratique Hacking Azure: <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>Support HackTricks</summary>
>
> - Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
> - **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
>
> </details>
HackTricks Cloud

