Pentesting KMS & Secret Manager

A diferencia de otros servicios, para usar una clave KMS no basta con tener permisos en IAM. Las claves tienen sus propias Key Policies.

Regla de oro: Si la política de la clave no te da permiso explícito, ni siquiera el usuario Administrator de la cuenta puede usarla o borrarla (a menos que la política permita específicamente la delegación a IAM).


aws kms list-keys --endpoint-url http://127.0.0.1:4566
aws kms list-aliases --endpoint-url http://127.0.0.1:4566
aws kms describe-key --key-id 0b539917-5eff-45b2-9fa1-e13f0d2c42ac --endpoint-url http://127.0.0.1:4566

En binario

aws kms decrypt --ciphertext-blob fileb://servers.enc --key-id $key --output text --query Plaintext --endpoint-url http://127.0.0.1:4566

Si no es un binario sería file://data.txt

A veces en necesario pasarle el algoritmo de desencriptación (que se puede ver describiendo la clave)

aws  kms decrypt --key-id $key$ --ciphertext-blob fileb://servers.enc --encryption-algorithm RSAES_OAEP_SHA_256 --output text --endpoint-url http://127.0.0.1:4566 | /usr/bin/cat

Secrets Manager 🗝️

Para conceder acceso a secretos a un usuario de otra cuenta de AWS, es necesario:

AWS Secrets Manager se integra con AWS KMS para cifrar sus secretos dentro de AWS Secrets Manager.

Listar secretos

aws secretsmanager list-secrets --endpoint-url http://127.0.0.1:4566

Ver el valor del secreto

aws secretsmanager get-secret-value --secret-id 'Jira Support'  --endpoint-url http://127.0.0.1:4566