mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-28 05:33:10 -08:00
Translated ['', 'src/pentesting-cloud/aws-security/aws-unauthenticated-e
This commit is contained in:
@@ -1,74 +1,74 @@
|
||||
# AWS - Relational Database (RDS) Enum
|
||||
# AWS - リレーショナルデータベース (RDS) 列挙
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## 基本情報
|
||||
|
||||
AWSが提供する**Relational Database Service (RDS)**は、**クラウド内のリレーショナルデータベースの展開、運用、スケーリング**を簡素化するように設計されています。このサービスは、コスト効率とスケーラビリティの利点を提供し、ハードウェアのプロビジョニング、データベースの構成、パッチ適用、バックアップなどの労働集約的なタスクを自動化します。
|
||||
AWS が提供する **Relational Database Service (RDS)** は、クラウド上での **リレーショナルデータベースのデプロイ、運用、スケーリング** を簡素化するために設計されています。このサービスは、ハードウェアプロビジョニング、データベース構成、パッチ適用、バックアップなどの労働集約的な作業を自動化しつつ、コスト効率とスケーラビリティの利点を提供します。
|
||||
|
||||
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サービスとの**統合**、例えば:
|
||||
- AWS Identity and Access Management (**IAM**)による堅牢なアクセス制御。
|
||||
- AWS **CloudWatch**による包括的な監視とメトリクス。
|
||||
- AWS Key Management Service (**KMS**)による静止データの暗号化の確保。
|
||||
- **データベースインスタンスの管理** が簡素化される。
|
||||
- リードパフォーマンスを向上させるための **read replicas** の作成。
|
||||
- 高可用性とフェイルオーバーを確保するための **multi-Availability Zone (AZ) deployments** の構成。
|
||||
- 他の AWS サービスとの **統合**、例えば:
|
||||
- AWS Identity and Access Management (**IAM**) による堅牢なアクセス制御。
|
||||
- AWS **CloudWatch** による包括的な監視とメトリクス。
|
||||
- AWS Key Management Service (**KMS**) による at-rest の暗号化管理。
|
||||
|
||||
## 認証情報
|
||||
|
||||
DBクラスターを作成する際、マスター**ユーザー名**は設定可能です(デフォルトは**`admin`**)。このユーザーのパスワードを生成するには、以下の方法があります:
|
||||
DB クラスターを作成する際、マスターの **username** は設定可能です(デフォルトは **`admin`**)。このユーザーのパスワードを生成する方法は次のとおりです:
|
||||
|
||||
- **自分で**パスワードを指定する
|
||||
- RDSに**自動生成**させる
|
||||
- RDSに**AWS Secret Manager**でKMSキーで暗号化されたものを管理させる
|
||||
- 自分で **パスワードを指定する**
|
||||
- RDS に **自動生成** させる
|
||||
- RDS に AWS Secret Manager で **KMS キー** による暗号化で管理させる
|
||||
|
||||
<figure><img src="../../../images/image (144).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### 認証
|
||||
### 認証方式
|
||||
|
||||
認証オプションは3種類ありますが、**マスターパスワードの使用は常に許可されています**:
|
||||
認証オプションは3種類ありますが、**マスターパスワードの使用は常に許可されます**:
|
||||
|
||||
<figure><img src="../../../images/image (227).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### 公開アクセスとVPC
|
||||
### パブリックアクセス & VPC
|
||||
|
||||
デフォルトでは**データベースに対する公開アクセスは付与されていません**が、**付与される可能性があります**。したがって、デフォルトでは、選択した**セキュリティグループ**(EC2 SGに保存されている)が許可している場合にのみ、同じVPC内のマシンがアクセスできます。
|
||||
デフォルトでは **データベースへのパブリックアクセスは許可されていません** が、許可されることもあります。したがって、デフォルトでは選択された **security group**(EC2 SG に保存される)が許可している場合にのみ、同一 VPC のマシンからアクセス可能です。
|
||||
|
||||
DBインスタンスを公開する代わりに、**RDS Proxy**を作成することが可能で、これによりDBクラスターの**スケーラビリティ**と**可用性**が向上します。
|
||||
DB インスタンスを公開する代わりに、DB クラスターの **スケーラビリティ** と **可用性** を **改善する** **RDS Proxy** を作成することも可能です。
|
||||
|
||||
さらに、**データベースポートも変更可能**です。
|
||||
さらに、**データベースのポートは変更可能** です。
|
||||
|
||||
### 暗号化
|
||||
|
||||
**暗号化はデフォルトで有効**になっており、AWS管理キーを使用します(代わりにCMKを選択することも可能です)。
|
||||
**暗号化はデフォルトで有効** で、AWS 管理のキーが使用されます(代わりに CMK を選択することも可能)。
|
||||
|
||||
暗号化を有効にすることで、**ストレージ、スナップショット、リードレプリカ、バックアップの静止データの暗号化**が有効になります。この暗号化を管理するためのキーは**KMS**を使用して発行できます。\
|
||||
データベースが作成された後にこのレベルの暗号化を追加することはできません。**作成時に行う必要があります**。
|
||||
暗号化を有効にすると、**ストレージ、スナップショット、read replicas、およびバックアップに対する encryption at rest** が有効になります。これらの暗号化を管理するキーは **KMS** を使用して発行できます。\
|
||||
データベース作成後にこのレベルの暗号化を追加することはできません。**作成時に設定する必要があります**。
|
||||
|
||||
ただし、**暗号化されていないデータベースを暗号化するための回避策があります**。暗号化されていないデータベースのスナップショットを作成し、そのスナップショットの暗号化されたコピーを作成し、その暗号化されたスナップショットを使用して新しいデータベースを作成することで、最終的にデータベースが暗号化されます。
|
||||
ただし、暗号化されていないデータベースを暗号化するための **ワークアラウンド** が存在します。暗号化されていないデータベースのスナップショットを作成し、そのスナップショットの暗号化されたコピーを作成し、その暗号化されたスナップショットを使って新しいデータベースを作成することで、最終的にそのデータベースを暗号化することができます。
|
||||
|
||||
#### 透過的データ暗号化 (TDE)
|
||||
#### Transparent Data Encryption (TDE)
|
||||
|
||||
アプリケーションレベルでのRDSに固有の暗号化機能に加えて、RDSは静止データを保護するための**追加のプラットフォームレベルの暗号化メカニズム**もサポートしています。これには、OracleおよびSQL Server用の**透過的データ暗号化 (TDE)**が含まれます。ただし、TDEは静止データを暗号化することでセキュリティを強化しますが、**データベースのパフォーマンスに影響を与える可能性がある**ことに注意が必要です。このパフォーマンスへの影響は、MySQLの暗号化関数やMicrosoft Transact-SQLの暗号化関数と併用した場合に特に顕著です。
|
||||
RDS に備わるアプリケーションレベルの暗号化機能に加え、RDS はデータの保存時の保護のための **プラットフォームレベルの追加暗号化機構** もサポートしています。これには Oracle と SQL Server 向けの **Transparent Data Encryption (TDE)** が含まれます。しかし、TDE はデータを保存時に暗号化することでセキュリティを強化しますが、**データベースのパフォーマンスに影響を与える可能性がある** ことに注意が必要です。特に MySQL の暗号化関数や Microsoft Transact-SQL の暗号化関数と併用すると、このパフォーマンス影響が顕著になることがあります。
|
||||
|
||||
TDEを利用するには、いくつかの前提条件が必要です:
|
||||
TDE を利用するには、いくつかの事前手順が必要です:
|
||||
|
||||
1. **オプショングループの関連付け**:
|
||||
- データベースはオプショングループに関連付けられている必要があります。オプショングループは、設定や機能のコンテナとして機能し、セキュリティの強化を含むデータベース管理を容易にします。
|
||||
- ただし、オプショングループは特定のデータベースエンジンとバージョンにのみ利用可能であることに注意が必要です。
|
||||
2. **オプショングループへのTDEの含有**:
|
||||
- オプショングループに関連付けられた後、Oracleの透過的データ暗号化オプションをそのグループに含める必要があります。
|
||||
- TDEオプションがオプショングループに追加されると、それは恒久的なものであり、削除することはできません。
|
||||
3. **TDE暗号化モード**:
|
||||
- TDEは2つの異なる暗号化モードを提供します:
|
||||
- **TDEテーブルスペース暗号化**:このモードは、全体のテーブルを暗号化し、より広範なデータ保護を提供します。
|
||||
- **TDEカラム暗号化**:このモードは、データベース内の特定の個別要素を暗号化することに焦点を当て、暗号化されるデータに対するより細かな制御を可能にします。
|
||||
1. **Option Group の関連付け**:
|
||||
- データベースは option group に関連付けられている必要があります。option group は設定や機能のコンテナとして機能し、データベース管理(セキュリティ強化を含む)を容易にします。
|
||||
- ただし、option group は特定のデータベースエンジンとバージョンでのみ利用可能であることに注意してください。
|
||||
2. **Option Group に TDE を含める**:
|
||||
- option group に関連付けた後、Oracle Transparent Data Encryption のオプションをそのグループに含める必要があります。
|
||||
- 一度 TDE オプションが option group に追加されると、それは恒久的なものとなり、削除することはできない点を認識しておくことが重要です。
|
||||
3. **TDE の暗号化モード**:
|
||||
- TDE には 2 つの異なる暗号化モードがあります:
|
||||
- **TDE Tablespace Encryption**: テーブルスペース全体を暗号化し、より広範なデータ保護を提供します。
|
||||
- **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
|
||||
|
||||
@@ -111,27 +116,27 @@ aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password
|
||||
../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**が必要になります。
|
||||
インターネットから**データベース**へ公開アクセスを付与することが可能です。攻撃者はデータベースに侵入するために、**ユーザー名とパスワードを知っていること、**IAMアクセス、または**exploit**が必要です。
|
||||
|
||||
## 公開RDSスナップショット
|
||||
|
||||
AWSは**誰でもRDSスナップショットをダウンロードできるアクセスを許可する**ことができます。これらの公開RDSスナップショットは自分のアカウントから非常に簡単に一覧できます:
|
||||
AWSは**誰でもRDSスナップショットをダウンロードできるアクセスを付与する**ことを許可しています。ご自身のアカウントからこれらの公開RDSスナップショットを非常に簡単に一覧表示できます:
|
||||
```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 クラスター スナップショット
|
||||
|
||||
同様に、クラスター スナップショットを確認できます。
|
||||
```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