AWS - Relational Database (RDS) Enum
Reading time: 10 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
AWSが提供する**Relational Database Service (RDS)**は、クラウド内のリレーショナルデータベースの展開、運用、スケーリングを簡素化するように設計されています。このサービスは、コスト効率とスケーラビリティの利点を提供し、ハードウェアのプロビジョニング、データベースの構成、パッチ適用、バックアップなどの労働集約的なタスクを自動化します。
AWS RDSは、MySQL、PostgreSQL、MariaDB、Oracle Database、Microsoft SQL Server、Amazon Auroraなど、広く使用されているさまざまなリレーショナルデータベースエンジンをサポートしており、MySQLとPostgreSQLの両方に互換性があります。
RDSの主な機能には以下が含まれます:
- データベースインスタンスの管理が簡素化されています。
- 読み取りパフォーマンスを向上させるためのリードレプリカの作成。
- 高可用性とフェイルオーバーメカニズムを確保するためのマルチアベイラビリティゾーン(AZ)デプロイメントの構成。
- 他のAWSサービスとの統合、例えば:
- AWS Identity and Access Management (IAM)による堅牢なアクセス制御。
- AWS CloudWatchによる包括的な監視とメトリクス。
- AWS Key Management Service (KMS)による静止データの暗号化の確保。
認証情報
DBクラスターを作成する際、マスターユーザー名は設定可能です(デフォルトは**admin
**)。このユーザーのパスワードを生成するには、以下の方法があります:
- 自分でパスワードを指定する
- RDSに自動生成させる
- RDSにAWS Secret ManagerでKMSキーで暗号化されたものを管理させる
.png)
認証
認証オプションは3種類ありますが、マスターパスワードの使用は常に許可されています:
.png)
公開アクセスとVPC
デフォルトではデータベースに対する公開アクセスは付与されていませんが、付与される可能性があります。したがって、デフォルトでは、選択したセキュリティグループ(EC2 SGに保存されている)が許可している場合にのみ、同じVPC内のマシンがアクセスできます。
DBインスタンスを公開する代わりに、RDS Proxyを作成することが可能で、これによりDBクラスターのスケーラビリティと可用性が向上します。
さらに、データベースポートも変更可能です。
暗号化
暗号化はデフォルトで有効になっており、AWS管理キーを使用します(代わりにCMKを選択することも可能です)。
暗号化を有効にすることで、ストレージ、スナップショット、リードレプリカ、バックアップの静止データの暗号化が有効になります。この暗号化を管理するためのキーはKMSを使用して発行できます。
データベースが作成された後にこのレベルの暗号化を追加することはできません。作成時に行う必要があります。
ただし、暗号化されていないデータベースを暗号化するための回避策があります。暗号化されていないデータベースのスナップショットを作成し、そのスナップショットの暗号化されたコピーを作成し、その暗号化されたスナップショットを使用して新しいデータベースを作成することで、最終的にデータベースが暗号化されます。
透過的データ暗号化 (TDE)
アプリケーションレベルでのRDSに固有の暗号化機能に加えて、RDSは静止データを保護するための追加のプラットフォームレベルの暗号化メカニズムもサポートしています。これには、OracleおよびSQL Server用の**透過的データ暗号化 (TDE)**が含まれます。ただし、TDEは静止データを暗号化することでセキュリティを強化しますが、データベースのパフォーマンスに影響を与える可能性があることに注意が必要です。このパフォーマンスへの影響は、MySQLの暗号化関数やMicrosoft Transact-SQLの暗号化関数と併用した場合に特に顕著です。
TDEを利用するには、いくつかの前提条件が必要です:
- オプショングループの関連付け:
- データベースはオプショングループに関連付けられている必要があります。オプショングループは、設定や機能のコンテナとして機能し、セキュリティの強化を含むデータベース管理を容易にします。
- ただし、オプショングループは特定のデータベースエンジンとバージョンにのみ利用可能であることに注意が必要です。
- オプショングループへのTDEの含有:
- オプショングループに関連付けられた後、Oracleの透過的データ暗号化オプションをそのグループに含める必要があります。
- TDEオプションがオプショングループに追加されると、それは恒久的なものであり、削除することはできません。
- TDE暗号化モード:
- TDEは2つの異なる暗号化モードを提供します:
- TDEテーブルスペース暗号化:このモードは、全体のテーブルを暗号化し、より広範なデータ保護を提供します。
- TDEカラム暗号化:このモードは、データベース内の特定の個別要素を暗号化することに焦点を当て、暗号化されるデータに対するより細かな制御を可能にします。
- TDEは2つの異なる暗号化モードを提供します:
これらの前提条件とTDEの運用の複雑さを理解することは、RDS内での暗号化の効果的な実装と管理において重要であり、データのセキュリティと必要な基準への準拠を確保します。
列挙
# 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
# 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
認証されていないアクセス
AWS - RDS Unauthenticated Enum
特権昇格
ポストエクスプロイト
永続性
SQLインジェクション
DynamoDBデータにSQL構文でアクセスする方法があるため、典型的なSQLインジェクションも可能です。
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。