AWS - Relational Database (RDS) Enum

AWSが提供する**リレーショナルデータベースサービス(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にそれをKMSキーで暗号化されたAWS Secret Managerで管理させる

認証

認証オプションには3種類ありますが、マスターパスワードを使用することは常に許可されています

パブリックアクセスとVPC

デフォルトでは、データベースへのパブリックアクセスは許可されていませんが、許可される可能性があります。したがって、デフォルトでは、同じVPCからのみアクセスできるようになります。選択したセキュリティグループ(EC2 SGに保存されています)が許可している場合。

DBインスタンスを公開する代わりに、RDS Proxyを作成することも可能で、これによりDBクラスターのスケーラビリティ可用性が向上します。

さらに、データベースポートを変更することもできます。

暗号化

暗号化はデフォルトで有効になっており、AWSが管理するキーを使用しています(代わりにCMKを選択できます)。

暗号化を有効にすると、ストレージ、スナップショット、リードレプリカ、バックアップの暗号化が有効になります。この暗号化を管理するためのキーは、KMSを使用して発行できます。 この暗号化レベルをデータベースが作成された後に追加することはできません。作成中に行う必要があります

ただし、次の方法で暗号化されていないデータベースを暗号化することが可能です。暗号化されていないデータベースのスナップショットを作成し、そのスナップショットの暗号化コピーを作成し、その暗号化されたスナップショットを使用して新しいデータベースを作成し、最終的にデータベースが暗号化されます。

透過的データ暗号化(TDE)

RDSに固有の暗号化機能に加えて、RDSはOracleとSQL Server向けのデータを安全に保護するための追加のプラットフォームレベルの暗号化メカニズムもサポートしています。これにはOracleとSQL Server向けの透過的データ暗号化(TDE)が含まれます。ただし、データを安全に暗号化することでセキュリティを向上させる一方で、TDEはデータベースのパフォーマンスに影響を与える可能性があります。このパフォーマンスへの影響は、MySQLの暗号化関数やMicrosoft Transact-SQLの暗号化関数と併用した場合に特に顕著です。

TDEを利用するには、以下の事前ステップが必要です:

  1. オプショングループの関連付け

    • データベースはオプショングループに関連付ける必要があります。オプショングループは設定や機能を含むコンテナとして機能し、セキュリティ強化を含むデータベース管理を容易にします。

    • ただし、オプショングループは特定のデータベースエンジンとバージョンにのみ利用可能です。

  2. オプショングループにTDEを含める

    • オプショングループに関連付けられた場合、Oracle Transparent Data Encryptionオプションをそのグループに含める必要があります。

    • TDEオプションがオプショングループに追加されると、それが恒久的なものとなり、削除することはできません。

  3. TDE暗号化モード

    • TDEには2つの異なる暗号化モードがあります:

      • TDE Tablespace Encryption:このモードはテーブル全体を暗号化し、より広範囲のデータ保護を提供します。

      • TDE Column Encryption:このモードはデータベース内の特定の個々の要素を暗号化することに焦点を当て、どのデータを暗号化するかをより細かく制御できます。

これらの前提条件と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

認証されていないアクセス

pageAWS - RDS Unauthenticated Enum

特権昇格

pageAWS - RDS Privesc

攻撃後の活動

pageAWS - RDS Post Exploitation

永続性

pageAWS - RDS Persistence

SQLインジェクション

SQL構文を使用してDynamoDBデータにアクセスする方法があり、そのため、典型的なSQLインジェクションも可能です。

htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法:

最終更新