AWS - Реляційна база даних (RDS) Перерахування

Reading time: 6 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

Загальна інформація

Служба Relational Database Service (RDS) від AWS призначена для спрощення розгортання, експлуатації та масштабування реляційної бази даних у хмарі. Ця служба забезпечує переваги економічності та масштабованості, автоматизуючи трудомісткі завдання, такі як забезпечення апаратного забезпечення, конфігурація бази даних, оновлення та резервне копіювання.

AWS RDS підтримує різні широко вживані рушії реляційних баз даних, включаючи MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server та Amazon Aurora, з сумісністю для MySQL та PostgreSQL.

Ключові можливості RDS включають:

  • Спрощене управління інстансами бази даних.
  • Створення read replicas для покращення продуктивності читання.
  • Конфігурація multi-Availability Zone (AZ) deployments для забезпечення високої доступності та механізмів відмовостійкості.
  • Інтеграція з іншими сервісами AWS, такими як:
  • AWS Identity and Access Management (IAM) для надійного контролю доступу.
  • AWS CloudWatch для комплексного моніторингу та метрик.
  • AWS Key Management Service (KMS) для забезпечення шифрування в стані спокою.

Облікові дані

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

  • Вказати пароль самостійно
  • Попросити RDS автоматично згенерувати його
  • Довірити RDS керування ним в AWS Secret Manager зашифрованим з використанням KMS key

Аутентифікація

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

Публічний доступ та VPC

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

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

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

Шифрування

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

Увімкнувши шифрування, ви активуєте шифрування в стані спокою для вашого сховища, snapshot-ів, read replicas та резервних копій. Ключі для керування цим шифруванням можуть бути видані з використанням KMS.
Додати цей рівень шифрування після створення бази даних неможливо. Його потрібно вмикати під час створення.

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

Transparent Data Encryption (TDE)

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

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

  1. Option Group Association:
  • База даних повинна бути пов'язана з option group. Option groups служать контейнерами для налаштувань та функцій, що полегшують управління базою даних, включно з підвищенням безпеки.
  • Проте важливо зазначити, що option groups доступні лише для певних рушіїв баз даних та їх версій.
  1. Inclusion of TDE in Option Group:
  • Після асоціації з option group, опція Oracle Transparent Data Encryption має бути додана в цю групу.
  • Варто пам'ятати, що після додавання опції TDE до option group вона стає постійною і не може бути видалена.
  1. TDE Encryption Modes:
  • TDE пропонує два різні режими шифрування:
  • TDE Tablespace Encryption: цей режим шифрує цілі tablespace, забезпечуючи ширший рівень захисту даних.
  • TDE Column Encryption: цей режим фокусуєсь на шифруванні окремих колонок бази даних, дозволяючи більш вузький контроль над тим, які дані шифруються.

Розуміння цих передумов та операційних особливостей 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-name>

## Cluster snapshots
aws rds describe-db-cluster-snapshots
aws rds describe-db-cluster-snapshots --include-public --snapshot-type public

## Restore cluster snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-cluster-identifier <ID> --snapshot-identifier <ID>

# 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

Unauthenticated Access

AWS - RDS Unauthenticated Enum

Privesc

AWS - RDS Privesc

Post Exploitation

AWS - RDS Post Exploitation

Persistence

AWS - RDS Persistence

SQL Injection

Існують способи доступу до даних DynamoDB за допомогою SQL syntax, отже типові SQL injections також можливі.

SQL Injection - HackTricks

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