AWS - DynamoDB Enum
DynamoDB
Базова інформація
Amazon DynamoDB представлений AWS як повністю керована, безсерверна, ключ-значення NoSQL база даних, призначена для роботи з високопродуктивними додатками будь-якого розміру. Сервіс забезпечує надійні функції, включаючи вбудовані заходи безпеки, безперервні резервні копії, автоматизовану реплікацію в кількох регіонах, інтегрований кешування в оперативній пам'яті та зручні утиліти експорту даних.
У контексті DynamoDB, замість створення традиційної бази даних, створюються таблиці. Кожна таблиця вимагає вказання ключа розділення як невід'ємної складової основного ключа таблиці. Цей ключ розділення, в основному хеш-значення, відіграє критичну роль як у витягуванні елементів, так і у розподілі даних по різних хостах. Цей розподіл є ключовим для забезпечення масштабованості та доступності бази даних. Крім того, є можливість включити ключ сортування, щоб додатково уточнити організацію даних.
Шифрування
За замовчуванням DynamoDB використовує ключ KMS, який належить Amazon DynamoDB, навіть не керований ключ AWS, який принаймні належить вашому обліковому запису.
Резервні копії та експорт в S3
Можливо запланувати створення резервних копій таблиць або створювати їх на вимогу. Крім того, можливо включити відновлення до точки в часі (PITR) для таблиці. Відновлення до точки в часі забезпечує постійні резервні копії ваших даних DynamoDB протягом 35 днів, щоб допомогти захиститися від випадкових операцій запису або видалення.
Також можливо експортувати дані таблиці в S3, але таблиця повинна мати включене відновлення до точки в часі.
GUI
Є GUI для локальних служб Dynamo, таких як DynamoDB Local, dynalite, localstack, тощо, які можуть бути корисними: https://github.com/aaronshaf/dynamodb-admin
Перелік
Неаутентифікований доступ
AWS - DynamoDB Unauthenticated AccessПідвищення привілеїв
AWS - DynamoDB PrivescПісляексплуатаційна діяльність
AWS - DynamoDB Post ExploitationПостійність
AWS - DynamoDB PersistenceВнедрення в DynamoDB
SQL-ін'єкція
Є способи доступу до даних DynamoDB з SQL-синтаксисом, тому типові SQL-ін'єкції також можливі.
NoSQL-ін'єкція
У DynamoDB можна використовувати різні умови для отримання даних, як у звичайній NoSQL-ін'єкції, якщо можна приєднати більше умов для отримання даних, ви можете отримати приховані дані (або вивантажити всю таблицю). Тут ви можете знайти умови, підтримувані DynamoDB: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
Зверніть увагу, що підтримуються різні умови, якщо дані отримуються через query
або через scan
.
Фактично, дії Query повинні вказати умову "EQ" (рівність) у первинному ключі для роботи, що робить його набагато менш вразливим на NoSQL-ін'єкції (а також обмежує операцію).
Якщо ви можете змінити порівняння, виконане або додати нові, ви можете отримати більше даних.
Внедрення Raw Json
DynamoDB приймає об'єкти Json для пошуку даних всередині БД. Якщо ви виявите, що можете записувати в об'єкт json, відправлений для пошуку, ви можете зробити витяг БД, всі вміст.
Наприклад, внедрюючи запит наступного вигляду:
зловмисник може впровадити щось на зразок:
1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0
виправити умову "EQ", шукаючи ID 1000, а потім переглядаючи всі дані з рядком Id більше 0, що є всіма.
Впровадження властивості
Деякі SDK дозволяють використовувати рядок, що вказує на фільтрування, яке потрібно виконати, наприклад:
Вам потрібно знати, що при пошуку в DynamoDB для заміни значення атрибута в виразах фільтрації під час сканування елементів, токени повинні починатися з символу :
. Такі токени будуть замінені фактичним значенням атрибута під час виконання.
Отже, вхід, подібний до попереднього, можна обійти щось на зразок:
Last updated