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).
- Listar identificadores de las claves
bash
aws kms list-keys --endpoint-url http://127.0.0.1:4566- Listar alias de las claves (nombre humano)
bash
aws kms list-aliases --endpoint-url http://127.0.0.1:4566- Describir claves
bash
aws kms describe-key --key-id 0b539917-5eff-45b2-9fa1-e13f0d2c42ac --endpoint-url http://127.0.0.1:4566- Desencriptar usando una key
En binario
bash
aws kms decrypt --ciphertext-blob fileb://servers.enc --key-id $key --output text --query Plaintext --endpoint-url http://127.0.0.1:4566Si 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)
bash
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/catSecrets Manager 🗝️
Para conceder acceso a secretos a un usuario de otra cuenta de AWS, es necesario:
- Autorizar al usuario para que acceda al secreto.
- Conceder permiso al usuario para descifrar el secreto mediante KMS.
- Modificar la política de claves para permitir que el usuario externo la utilice.
AWS Secrets Manager se integra con AWS KMS para cifrar sus secretos dentro de AWS Secrets Manager.
Listar secretos
bash
aws secretsmanager list-secrets --endpoint-url http://127.0.0.1:4566Ver el valor del secreto
bash
aws secretsmanager get-secret-value --secret-id 'Jira Support' --endpoint-url http://127.0.0.1:4566