# AWS - Перерахунок реляційної бази даних (RDS) {{#include ../../../banners/hacktricks-training.md}} ## Основна інформація **Служба реляційних баз даних (RDS)**, що пропонується AWS, призначена для спрощення розгортання, експлуатації та масштабування **реляційної бази даних у хмарі**. Ця служба пропонує переваги економії витрат і масштабованості, автоматизуючи трудомісткі завдання, такі як постачання апаратного забезпечення, налаштування бази даних, патчинг і резервне копіювання. AWS RDS підтримує різні широко використовувані реляційні бази даних, включаючи MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server та Amazon Aurora, з сумісністю як для MySQL, так і для PostgreSQL. Ключові особливості RDS включають: - **Управління екземплярами бази даних** спрощено. - Створення **реплік для читання** для покращення продуктивності читання. - Налаштування **мульти-зональних (AZ) розгортань** для забезпечення високої доступності та механізмів відмови. - **Інтеграція** з іншими службами AWS, такими як: - AWS Identity and Access Management (**IAM**) для надійного контролю доступу. - AWS **CloudWatch** для всебічного моніторингу та метрик. - AWS Key Management Service (**KMS**) для забезпечення шифрування в спокої. ## Облікові дані При створенні кластера БД майстерний **ім'я користувача** може бути налаштований (**`admin`** за замовчуванням). Щоб згенерувати пароль цього користувача, ви можете: - **Вказати** **пароль** самостійно - Сказати RDS **автоматично згенерувати** його - Сказати RDS керувати ним у **AWS Secret Manager**, зашифрованому за допомогою ключа KMS
### Аутентифікація Існує 3 типи варіантів аутентифікації, але використання **майстерного пароля завжди дозволено**:
### Публічний доступ та VPC За замовчуванням **публічний доступ не надається** базам даних, однак він **може бути наданий**. Тому за замовчуванням лише машини з тієї ж VPC зможуть отримати доступ до неї, якщо вибрана **група безпеки** (зберігається в EC2 SG) дозволяє це. Замість того, щоб відкривати екземпляр БД, можна створити **RDS Proxy**, який **покращує** **масштабованість** та **доступність** кластера БД. Більше того, **порт бази даних також може бути змінений**. ### Шифрування **Шифрування увімкнено за замовчуванням** за допомогою керованого ключа AWS (може бути обрано CMK замість цього). Увімкнувши своє шифрування, ви увімкнули **шифрування в спокої для вашого сховища, знімків, реплік для читання та ваших резервних копій**. Ключі для управління цим шифруванням можуть бути видані за допомогою **KMS**.\ Не можливо додати цей рівень шифрування після створення вашої бази даних. **Це потрібно зробити під час її створення**. Однак існує **обхідний шлях, що дозволяє зашифрувати незашифровану базу даних наступним чином**. Ви можете створити знімок вашої незашифрованої бази даних, створити зашифровану копію цього знімка, використати цей зашифрований знімок для створення нової бази даних, і, нарешті, ваша база даних буде зашифрована. #### Прозоре шифрування даних (TDE) Поряд з можливостями шифрування, властивими RDS на рівні програми, RDS також підтримує **додаткові механізми шифрування на платформі** для захисту даних у спокої. Це включає **Прозоре шифрування даних (TDE)** для Oracle та SQL Server. Однак важливо зазначити, що хоча TDE підвищує безпеку, шифруючи дані в спокої, це також може **вплинути на продуктивність бази даних**. Цей вплив на продуктивність особливо помітний при використанні разом з криптографічними функціями MySQL або криптографічними функціями Microsoft Transact-SQL. Щоб використовувати TDE, необхідні певні попередні кроки: 1. **Асоціація групи параметрів**: - База даних повинна бути асоційована з групою параметрів. Групи параметрів служать контейнерами для налаштувань і функцій, полегшуючи управління базою даних, включаючи покращення безпеки. - Однак важливо зазначити, що групи параметрів доступні лише для певних движків бази даних і версій. 2. **Включення TDE в групу параметрів**: - Після асоціації з групою параметрів опція Oracle Transparent Data Encryption повинна бути включена в цю групу. - Важливо усвідомлювати, що після додавання опції TDE до групи параметрів вона стає постійною частиною і не може бути видалена. 3. **Режими шифрування TDE**: - TDE пропонує два різні режими шифрування: - **Шифрування таблиць TDE**: Цей режим шифрує цілі таблиці, забезпечуючи ширший обсяг захисту даних. - **Шифрування стовпців TDE**: Цей режим зосереджується на шифруванні конкретних, окремих елементів у базі даних, що дозволяє більш детально контролювати, які дані шифруються. Розуміння цих попередніх вимог і оперативних тонкощів TDE є важливим для ефективного впровадження та управління шифруванням у RDS, забезпечуючи як безпеку даних, так і відповідність необхідним стандартам. ### Перерахунок ```bash # Clusters info ## Get Endpoints, username, port, iam auth enabled, attached roles, SG aws rds describe-db-clusters aws rds describe-db-cluster-endpoints #Cluster URLs aws rds describe-db-cluster-backtracks --db-cluster-identifier ## Cluster snapshots aws rds describe-db-cluster-snapshots # Get DB instances info aws rds describe-db-instances #username, url, port, vpc, SG, is public? aws rds describe-db-security-groups ## Find automated backups aws rds describe-db-instance-automated-backups ## Find snapshots aws rds describe-db-snapshots aws rds describe-db-snapshots --include-public --snapshot-type public ## Restore snapshot as new instance aws rds restore-db-instance-from-db-snapshot --db-instance-identifier --db-snapshot-identifier --availability-zone us-west-2a # Any public snapshot in the account aws rds describe-db-snapshots --snapshot-type public # Proxies aws rds describe-db-proxy-endpoints aws rds describe-db-proxy-target-groups aws rds describe-db-proxy-targets ## reset credentials of MasterUsername aws rds modify-db-instance --db-instance-identifier --master-user-password --apply-immediately ``` ### Неавтентифікований доступ {{#ref}} ../aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum.md {{#endref}} ### Підвищення привілеїв {{#ref}} ../aws-privilege-escalation/aws-rds-privesc.md {{#endref}} ### Після експлуатації {{#ref}} ../aws-post-exploitation/aws-rds-post-exploitation.md {{#endref}} ### Постійність {{#ref}} ../aws-persistence/aws-rds-persistence.md {{#endref}} ### SQL-ін'єкція Існують способи доступу до даних DynamoDB з використанням **SQL-синтаксису**, отже, типові **SQL-ін'єкції також можливі**. {{#ref}} https://book.hacktricks.xyz/pentesting-web/sql-injection {{#endref}} {{#include ../../../banners/hacktricks-training.md}}