mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-29 07:00:29 -07:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-rela
This commit is contained in:
+47
-42
@@ -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
|
||||
|
||||
+17
-4
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user