AWS - Relational Database (RDS) Enum

Support HackTricks

Basic Information

Служба реляційних баз даних (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) для забезпечення шифрування в спокої.

Credentials

При створенні кластера БД майстер ім'я користувача може бути налаштоване (admin за замовчуванням). Щоб згенерувати пароль цього користувача, ви можете:

  • Вказати пароль самостійно

  • Сказати RDS автоматично згенерувати його

  • Сказати RDS керувати ним у AWS Secret Manager, зашифрованому за допомогою ключа KMS

Authentication

Існує 3 типи варіантів аутентифікації, але використання майстер-пароля завжди дозволено:

Public Access & VPC

За замовчуванням публічний доступ не надається до баз даних, однак він може бути наданий. Тому за замовчуванням лише машини з тієї ж VPC зможуть отримати до неї доступ, якщо вибрана група безпеки (зберігається в EC2 SG) дозволяє це.

Замість того, щоб відкривати екземпляр БД, можна створити RDS Proxy, який покращує масштабованість та доступність кластера БД.

Крім того, порт бази даних також може бути змінений.

Encryption

Шифрування увімкнено за замовчуванням за допомогою керованого ключа AWS (може бути обрано CMK замість цього).

Увімкнувши ваше шифрування, ви увімкнули шифрування в спокої для вашого сховища, знімків, реплік для читання та ваших резервних копій. Ключі для управління цим шифруванням можуть бути видані за допомогою KMS. Не можливо додати цей рівень шифрування після створення вашої бази даних. Це потрібно зробити під час її створення.

Однак існує обхідний шлях, що дозволяє зашифрувати незашифровану базу даних наступним чином. Ви можете створити знімок вашої незашифрованої бази даних, створити зашифровану копію цього знімка, використати цей зашифрований знімок для створення нової бази даних, а потім, нарешті, ваша база даних буде зашифрована.

Transparent Data Encryption (TDE)

Окрім можливостей шифрування, властивих RDS на рівні програми, RDS також підтримує додаткові механізми шифрування на платформі для захисту даних у спокої. Це включає Прозоре шифрування даних (TDE) для Oracle і SQL Server. Однак важливо зазначити, що хоча TDE підвищує безпеку, шифруючи дані в спокої, це також може вплинути на продуктивність бази даних. Цей вплив на продуктивність особливо помітний при використанні разом з криптографічними функціями MySQL або криптографічними функціями Microsoft Transact-SQL.

Щоб використовувати TDE, необхідні певні попередні кроки:

  1. Асоціація групи параметрів:

  • База даних повинна бути асоційована з групою параметрів. Групи параметрів служать контейнерами для налаштувань і функцій, полегшуючи управління базою даних, включаючи покращення безпеки.

  • Однак важливо зазначити, що групи параметрів доступні лише для певних движків бази даних і версій.

  1. Включення TDE в групу параметрів:

  • Після асоціації з групою параметрів опція Oracle Transparent Data Encryption повинна бути включена в цю групу.

  • Важливо усвідомлювати, що після додавання опції TDE до групи параметрів вона стає постійною і не може бути видалена.

  1. Режими шифрування TDE:

  • TDE пропонує два різні режими шифрування:

  • Шифрування таблиць TDE: Цей режим шифрує цілі таблиці, забезпечуючи ширший обсяг захисту даних.

  • Шифрування стовпців TDE: Цей режим зосереджується на шифруванні конкретних, окремих елементів у базі даних, що дозволяє більш детально контролювати, які дані шифруються.

Розуміння цих передумов і операційних тонкощів TDE є важливим для ефективного впровадження та управління шифруванням у RDS, забезпечуючи як безпеку даних, так і відповідність необхідним стандартам.

Enumeration

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

## 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 <ID> --db-snapshot-identifier <ID> --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 <ID> --master-user-password <NewPassword> --apply-immediately

Неавтентифікований доступ

AWS - RDS Unauthenticated Enum

Підвищення привілеїв

AWS - RDS Privesc

Після експлуатації

AWS - RDS Post Exploitation

Постійність

AWS - RDS Persistence

SQL-ін'єкція

Існують способи доступу до даних DynamoDB з використанням SQL-синтаксису, тому типові SQL-ін'єкції також можливі.

Підтримати HackTricks

Last updated