# AWS - Secrets Manager Enum

{{#include ../../../banners/hacktricks-training.md}}

## AWS Secrets Manager

AWS Secrets Manager is designed to **eliminate the use of hard-coded secrets in applications by replacing them with an API call**. This service serves as a **centralized repository for all your secrets**, ensuring they are managed uniformly across all applications.

The manager simplifies the **process of rotating secrets**, significantly improving the security posture of sensitive data like database credentials. Additionally, secrets like API keys can be automatically rotated with the integration of lambda functions.

The access to secrets is tightly controlled through detailed IAM identity-based policies and resource-based policies.

For granting access to secrets to a user from a different AWS account, it's necessary to:

1. Authorize the user to access the secret.
2. Grant permission to the user to decrypt the secret using KMS.
3. Modify the Key policy to allow the external user to utilize it.

**AWS Secrets Manager integrates with AWS KMS to encrypt your secrets within AWS Secrets Manager.**

### **Enumeration**

```bash
aws secretsmanager list-secrets #Get metadata of all secrets
aws secretsmanager list-secret-version-ids --secret-id <secret_name> # Get versions
aws secretsmanager describe-secret --secret-id <secret_name> # Get metadata
aws secretsmanager get-secret-value --secret-id <secret_name> # Get value
aws secretsmanager get-secret-value --secret-id <secret_name> --version-id <version-id> # Get value of a different version
aws secretsmanager get-resource-policy --secret-id --secret-id <secret_name>
```

### Privesc

{{#ref}}
../aws-privilege-escalation/aws-secrets-manager-privesc.md
{{#endref}}

### Post Exploitation

{{#ref}}
../aws-post-exploitation/aws-secrets-manager-post-exploitation.md
{{#endref}}

### Persistence

{{#ref}}
../aws-persistence/aws-secrets-manager-persistence.md
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}




