GCP - KMS Privesc
Aprenda e pratique Hacking na AWS: Treinamento HackTricks AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking no GCP:
Treinamento HackTricks GCP Red Team Expert (GRTE)
KMS
Informações sobre o KMS:
GCP - KMS EnumObserve que no KMS as permissões não são apenas herdadas de Organizações, Pastas e Projetos, mas também de Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToDecrypt
Você pode usar essa permissão para descriptografar informações com a chave sobre a qual você tem essa permissão.
cloudkms.cryptoKeys.setIamPolicy
cloudkms.cryptoKeys.setIamPolicy
Um atacante com essa permissão poderia se dar permissões para usar a chave para descriptografar informações.
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Aqui está uma quebra conceitual de como essa delegação funciona:
Conta de Serviço A tem acesso direto para decriptar usando uma chave específica no KMS.
Conta de Serviço B recebe a permissão
useToDecryptViaDelegation
. Isso permite que ela solicite ao KMS para decriptar dados em nome da Conta de Serviço A.
O uso dessa permissão é implícito na forma como o serviço KMS verifica as permissões quando uma solicitação de decriptação é feita.
Quando você faz uma solicitação de decriptação padrão usando a API do Google Cloud KMS (em Python ou outra linguagem), o serviço verifica se a conta de serviço solicitante possui as permissões necessárias. Se a solicitação for feita por uma conta de serviço com a permissão useToDecryptViaDelegation
, o KMS verifica se essa conta está autorizada a solicitar decriptação em nome da entidade que possui a chave.
Configurando a Delegação
Definir a Função Personalizada: Crie um arquivo YAML (por exemplo,
custom_role.yaml
) que define a função personalizada. Este arquivo deve incluir a permissãocloudkms.cryptoKeyVersions.useToDecryptViaDelegation
. Aqui está um exemplo de como esse arquivo pode ser:
Criar a Função Personalizada Usando o gcloud CLI: Utilize o seguinte comando para criar a função personalizada no seu projeto Google Cloud:
Substitua [YOUR_PROJECT_ID]
pelo ID do seu projeto Google Cloud.
Conceda o Papel Personalizado a uma Conta de Serviço: Atribua o seu papel personalizado a uma conta de serviço que estará usando essa permissão. Utilize o seguinte comando:
Substitua [YOUR_PROJECT_ID]
e [SERVICE_ACCOUNT_EMAIL]
pelo ID do seu projeto e pelo e-mail da conta de serviço, respectivamente.
Aprenda e pratique Hacking na AWS:Treinamento HackTricks AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking na GCP:
Treinamento HackTricks GCP Red Team Expert (GRTE)
Last updated