Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-rela

This commit is contained in:
Translator
2025-11-01 11:04:54 +00:00
parent a92279c586
commit 90b28e8884
2 changed files with 64 additions and 46 deletions
@@ -1,74 +1,74 @@
# AWS - Relational Database (RDS) Enum
# AWS - Реляційна база даних (RDS) Перерахування
{{#include ../../../banners/hacktricks-training.md}}
## Основна інформація
## Загальна інформація
**Служба реляційних баз даних (RDS)**, що пропонується AWS, призначена для спрощення розгортання, експлуатації та масштабування **реляційної бази даних у хмарі**. Ця служба пропонує переваги економії витрат і масштабованості, автоматизуючи трудомісткі завдання, такі як постачання апаратного забезпечення, налаштування бази даних, патчинг і резервне копіювання.
Служба **Relational Database Service (RDS)** від AWS призначена для спрощення розгортання, експлуатації та масштабування **реляційної бази даних у хмарі**. Ця служба забезпечує переваги економічності та масштабованості, автоматизуючи трудомісткі завдання, такі як забезпечення апаратного забезпечення, конфігурація бази даних, оновлення та резервне копіювання.
AWS RDS підтримує різні широко використовувані реляційні бази даних, включаючи MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server та Amazon Aurora, з сумісністю як для MySQL, так і для PostgreSQL.
AWS RDS підтримує різні широко вживані рушії реляційних баз даних, включаючи MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server та Amazon Aurora, з сумісністю для MySQL та PostgreSQL.
Ключові особливості RDS включають:
Ключові можливості RDS включають:
- **Управління екземплярами бази даних** спрощено.
- Створення **реплік для читання** для покращення продуктивності читання.
- Налаштування **мульти-зональних (AZ) розгортань** для забезпечення високої доступності та механізмів відмови.
- **Інтеграція** з іншими службами AWS, такими як:
- **Спрощене управління інстансами бази даних**.
- Створення **read replicas** для покращення продуктивності читання.
- Конфігурація **multi-Availability Zone (AZ) deployments** для забезпечення високої доступності та механізмів відмовостійкості.
- **Інтеграція** з іншими сервісами AWS, такими як:
- AWS Identity and Access Management (**IAM**) для надійного контролю доступу.
- AWS **CloudWatch** для всебічного моніторингу та метрик.
- AWS Key Management Service (**KMS**) для забезпечення шифрування в спокої.
- AWS **CloudWatch** для комплексного моніторингу та метрик.
- AWS Key Management Service (**KMS**) для забезпечення шифрування в стані спокою.
## Облікові дані
При створенні кластера DB майстер **ім'я користувача** може бути налаштоване (**`admin`** за замовчуванням). Щоб згенерувати пароль цього користувача, ви можете:
При створенні DB cluster головне **ім'я користувача** може бути налаштоване (за замовчуванням **`admin`**). Щоб згенерувати пароль цього користувача, ви можете:
- **Вказати** **пароль** самостійно
- Сказати RDS **автоматично згенерувати** його
- Сказати RDS керувати ним у **AWS Secret Manager**, зашифрованому за допомогою ключа KMS
- **Вказати** пароль самостійно
- Попросити RDS **автоматично згенерувати** його
- Довірити RDS керування ним в **AWS Secret Manager** зашифрованим з використанням KMS key
<figure><img src="../../../images/image (144).png" alt=""><figcaption></figcaption></figure>
### Аутентифікація
Існує 3 типи варіантів аутентифікації, але використання **майстер-пароля завжди дозволено**:
Існує 3 типи опцій аутентифікації, але використання **master password завжди дозволено**:
<figure><img src="../../../images/image (227).png" alt=""><figcaption></figcaption></figure>
### Публічний доступ та VPC
За замовчуванням **публічний доступ не надається** базам даних, однак він **може бути наданий**. Тому за замовчуванням лише машини з тієї ж VPC зможуть отримати доступ до неї, якщо вибрана **група безпеки** (зберігається в EC2 SG) це дозволяє.
За замовчуванням **публічний доступ не надається** до баз даних, проте його **можна надати**. Отже, за замовчуванням лише машини з того ж VPC зможуть отримати доступ, якщо обраний **security group** (зберігаються в EC2 SG) дозволяє це.
Замість того, щоб відкривати екземпляр бази даних, можна створити **RDS Proxy**, який **покращує** **масштабованість** та **доступність** кластера бази даних.
Замість того, щоб відкривати DB instance, можливо створити **RDS Proxy**, який **покращує** **масштабованість** та **доступність** DB cluster.
Крім того, **порт бази даних також може бути змінений**.
Крім того, **порт бази даних можна змінити**.
### Шифрування
**Шифрування увімкнено за замовчуванням** за допомогою керованого ключа AWS (може бути обрано CMK замість цього).
**Шифрування увімкнено за замовчуванням** з використанням ключа, яким керує AWS (замість нього можна вибрати CMK).
Увімкнувши своє шифрування, ви увімкнули **шифрування в спокої для вашого сховища, знімків, реплік для читання та ваших резервних копій**. Ключі для управління цим шифруванням можуть бути видані за допомогою **KMS**.\
Не можливо додати цей рівень шифрування після створення вашої бази даних. **Це потрібно зробити під час її створення**.
Увімкнувши шифрування, ви активуєте **шифрування в стані спокою для вашого сховища, snapshot-ів, read replicas та резервних копій**. Ключі для керування цим шифруванням можуть бути видані з використанням **KMS**.\
Додати цей рівень шифрування після створення бази даних неможливо. **Його потрібно вмикати під час створення**.
Однак існує **обхідний шлях, що дозволяє зашифрувати незашифровану базу даних наступним чином**. Ви можете створити знімок вашої незашифрованої бази даних, створити зашифровану копію цього знімка, використати цей зашифрований знімок для створення нової бази даних, і, нарешті, ваша база даних буде зашифрована.
Однак існує **обхідний шлях, що дозволяє зашифрувати незашифровану базу даних наступним чином**. Можна створити snapshot вашої незашифрованої бази даних, створити зашифровану копію цього snapshot-а, використати цей зашифрований snapshot для створення нової бази даних, і тоді ваша база даних буде зашифрована.
#### Прозоре шифрування даних (TDE)
#### Transparent Data Encryption (TDE)
Окрім можливостей шифрування, властивих RDS на рівні програми, RDS також підтримує **додаткові механізми шифрування на платформі** для захисту даних у спокої. Це включає **Прозоре шифрування даних (TDE)** для Oracle та SQL Server. Однак важливо зазначити, що хоча TDE підвищує безпеку, шифруючи дані в спокої, це також може **вплинути на продуктивність бази даних**. Цей вплив на продуктивність особливо помітний при використанні разом з криптографічними функціями MySQL або криптографічними функціями Microsoft Transact-SQL.
Поряд із можливостями шифрування на рівні застосунку, властивими RDS, RDS також підтримує **додаткові механізми шифрування на рівні платформи** для захисту даних у стані спокою. До них відноситься **Transparent Data Encryption (TDE)** для Oracle та SQL Server. Важливо зазначити, що хоча TDE підвищує безпеку шляхом шифрування даних у стані спокою, це також може **вплинути на продуктивність бази даних**. Цей вплив на продуктивність особливо помітний при використанні разом із криптографічними функціями MySQL або Microsoft Transact-SQL.
Щоб використовувати TDE, необхідні певні попередні кроки:
Щоб використовувати TDE, потрібні певні попередні кроки:
1. **Асоціація групи параметрів**:
- База даних повинна бути асоційована з групою параметрів. Групи параметрів слугують контейнерами для налаштувань і функцій, полегшуючи управління базою даних, включаючи покращення безпеки.
- Однак важливо зазначити, що групи параметрів доступні лише для певних движків бази даних і версій.
2. **Включення TDE в групу параметрів**:
- Після асоціації з групою параметрів опція Oracle Transparent Data Encryption повинна бути включена в цю групу.
- Важливо усвідомлювати, що після додавання опції TDE до групи параметрів вона стає постійною і не може бути видалена.
3. **Режими шифрування TDE**:
1. **Option Group Association**:
- База даних повинна бути пов'язана з option group. Option groups служать контейнерами для налаштувань та функцій, що полегшують управління базою даних, включно з підвищенням безпеки.
- Проте важливо зазначити, що option groups доступні лише для певних рушіїв баз даних та їх версій.
2. **Inclusion of TDE in Option Group**:
- Після асоціації з option group, опція Oracle Transparent Data Encryption має бути додана в цю групу.
- Варто пам'ятати, що після додавання опції TDE до option group вона стає постійною і не може бути видалена.
3. **TDE Encryption Modes**:
- TDE пропонує два різні режими шифрування:
- **Шифрування таблиць TDE**: Цей режим шифрує цілі таблиці, забезпечуючи ширший обсяг захисту даних.
- **Шифрування стовпців TDE**: Цей режим зосереджується на шифруванні конкретних, окремих елементів у базі даних, що дозволяє більш детально контролювати, які дані шифруються.
- **TDE Tablespace Encryption**: цей режим шифрує цілі tablespace, забезпечуючи ширший рівень захисту даних.
- **TDE Column Encryption**: цей режим фокусуєсь на шифруванні окремих колонок бази даних, дозволяючи більш вузький контроль над тим, які дані шифруються.
Розуміння цих передумов і оперативних тонкощів TDE є важливим для ефективного впровадження та управління шифруванням у RDS, забезпечуючи як безпеку даних, так і відповідність необхідним стандартам.
Розуміння цих передумов та операційних особливостей TDE є ключовим для ефективного впровадження та управління шифруванням в RDS, забезпечуючи як безпеку даних, так і відповідність необхідним стандартам.
### Перерахування
```bash
@@ -80,6 +80,10 @@ 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?
@@ -91,6 +95,7 @@ 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
@@ -105,33 +110,33 @@ 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
{{#ref}}
../aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum/README.md
{{#endref}}
### Підвищення привілеїв
### Privesc
{{#ref}}
../aws-privilege-escalation/aws-rds-privesc/README.md
{{#endref}}
### Постексплуатація
### Post Exploitation
{{#ref}}
../aws-post-exploitation/aws-rds-post-exploitation/README.md
{{#endref}}
### Постійність
### Persistence
{{#ref}}
../aws-persistence/aws-rds-persistence/README.md
{{#endref}}
### SQL-ін'єкція
### SQL Injection
Існують способи доступу до даних DynamoDB з використанням **SQL-синтаксису**, отже, типові **SQL-ін'єкції також можливі**.
Існують способи доступу до даних DynamoDB за допомогою **SQL syntax**, отже типові **SQL injections** також можливі.
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/sql-injection/index.html
@@ -4,7 +4,7 @@
## RDS
Для отримання додаткової інформації див.:
For more information check:
{{#ref}}
../../aws-services/aws-relational-database-rds-enum.md
@@ -12,11 +12,11 @@
## Публічний порт
Можна надати публічний доступ до **бази даних з інтернету**. Атакувальнику все одно доведеться **знати ім'я користувача та пароль,** мати доступ IAM, або використати **exploit** щоб потрапити в базу даних.
Можна надати публічний доступ до **бази даних з інтернету**. Нападнику все одно потрібно буде **знати username і password,** доступ IAM, або використовувати **exploit**, щоб потрапити до бази даних.
## Публічні RDS Snapshots
AWS дозволяє надати **доступ будь-кому для завантаження RDS snapshots**. Ви можете дуже легко перелічити ці публічні RDS snapshots зі свого облікового запису:
AWS дозволяє надавати **access to anyone to download RDS snapshots**. Ви можете дуже легко перелічити ці public RDS snapshots зі свого облікового запису:
```bash
# Public RDS snapshots
aws rds describe-db-snapshots --include-public
@@ -32,7 +32,20 @@ aws rds describe-db-snapshots --snapshot-type public [--region us-west-2]
## Even if in the console appear as there are public snapshot it might be public
## snapshots from other accounts used by the current account
```
### Публічний шаблон URL
## Публічні RDS Cluster Snapshots
Аналогічно, ви можете шукати знімки кластерів
```bash
# Public RDS cluster snapshots
aws rds describe-db-cluster-snapshots --include-public
## Search by account ID
aws rds describe-db-cluster-snapshots --include-public --query 'DBClusterSnapshots[?contains(DBClusterSnapshotIdentifier, `284546856933:`) == `true`]'
# From the own account you can check if there is any public cluster snapshot with:
aws rds describe-db-cluster-snapshots --snapshot-type public [--region us-west-2]
```
### Шаблон публічної URL-адреси
```
mysql://{user_provided}.{random_id}.{region}.rds.amazonaws.com:3306
postgres://{user_provided}.{random_id}.{region}.rds.amazonaws.com:5432