Skip to content

Pentesting KMS & Secret Manager

#aws #iam #secretmanager

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: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)

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/cat

Secrets 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:4566

Ver el valor del secreto

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

Notas personales de seguridad ofensiva.