Translated ['', 'src/pentesting-cloud/aws-security/aws-unauthenticated-e

This commit is contained in:
Translator
2025-11-01 11:06:47 +00:00
parent 4faf8e42e8
commit fe8e27d363
2 changed files with 66 additions and 48 deletions

View File

@@ -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 AuroraMySQL/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**自動生成** させる
- RDSAWS 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 はデータの保存時の保護のための **プラットフォームレベルの追加暗号化機構** もサポートしています。これには OracleSQL 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

View File

@@ -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