AWS - RDS Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
RDSに関する詳細情報は以下を確認してください:
AWS - Relational Database (RDS) Enumrds:ModifyDBInstance
その権限を持つ攻撃者はマスターユーザーのパスワードを変更し、データベース内のログインを行うことができます:
データベースに接続することができる必要があります(通常、内部ネットワークからのみアクセス可能です)。
潜在的な影響: データベース内の機密情報を見つけることができます。
ドキュメントによると、この権限を持つユーザーはDBインスタンスに接続できます。
SELECT datname FROM pg_database;
を実行して rdsadmin
というデータベースが見つかると、AWS postgresqlデータベース内にいることがわかります。
まず、このデータベースが他のAWSサービスにアクセスするために使用されているかどうかを確認できます。インストールされている拡張機能を見て確認できます:
もし**aws_s3
のようなものを見つけた場合、このデータベースにはS3に対する何らかのアクセス権があると考えられます(aws_ml
やaws_lambda
**などの他の拡張子もあります)。
また、aws rds describe-db-clusters
を実行する権限がある場合、AssociatedRoles
フィールドでクラスターにIAMロールが添付されているかどうかを確認できます。もしあれば、そのデータベースは他のAWSサービスにアクセスするために準備されていると考えられます。ロールの名前(またはロールの権限を取得できる場合)に基づいて、データベースが持つ追加のアクセス権を推測することができます。
さて、バケット内のファイルを読むためには、フルパスを知っている必要があります。次のようにして読むことができます:
もし生のAWS認証情報を持っていれば、次のコマンドを使用してS3データにアクセスすることもできます:
Postgresql は S3 にアクセスするためにパラメータグループの変数を変更する必要がありません。
mysql 内で SELECT User, Host FROM mysql.user;
クエリを実行し、rdsadmin
というユーザーが存在する場合、あなたは AWS RDS mysql db 内にいると考えることができます。
mysql 内で show variables;
を実行し、aws_default_s3_role
、aurora_load_from_s3_role
、aurora_select_into_s3_role
などの変数に値がある場合、データベースは S3 データにアクセスする準備ができていると考えることができます。
また、aws rds describe-db-clusters
を実行する権限がある場合、クラスターに 関連付けられたロール があるかどうかを確認できます。これは通常、AWS サービスへのアクセスを意味します。
さて、バケット内のファイルを読むためには、フルパスを知っている必要があります。次のようにして読むことができます:
rds:AddRoleToDBCluster
, iam:PassRole
rds:AddRoleToDBCluster
と iam:PassRole
の権限を持つ攻撃者は、既存のRDSインスタンスに指定されたロールを追加することができます。これにより、攻撃者は機密データにアクセスしたり、インスタンス内のデータを変更したりすることが可能になります。
潜在的な影響: RDSインスタンス内の機密データへのアクセスまたはデータの不正な変更。 一部のDBは、Mysqlのように、パラメータグループにロールARNを指定する必要があるなど、追加の設定が必要であることに注意してください。
rds:CreateDBInstance
この権限だけで、攻撃者は既存のクラスター内に新しいインスタンスを作成でき、IAMロールが添付されている場合があります。マスターユーザーパスワードを変更することはできませんが、新しいデータベースインスタンスをインターネットに公開できる可能性があります。
rds:CreateDBInstance
, iam:PassRole
TODO: テスト
rds:CreateDBInstance
と iam:PassRole
の権限を持つ攻撃者は、指定されたロールを添付した新しい RDS インスタンスを作成できます。攻撃者はその後、機密データにアクセスしたり、インスタンス内のデータを変更したりする可能性があります。
添付するロール/インスタンスプロファイルのいくつかの要件(こちらから):
プロファイルはあなたのアカウントに存在しなければなりません。
プロファイルには、Amazon EC2 が引き受ける権限を持つ IAM ロールが必要です。
インスタンスプロファイル名と関連する IAM ロール名は、プレフィックス AWSRDSCustom
で始まる必要があります。
潜在的な影響: RDSインスタンス内の機密データへのアクセスまたはデータの不正な変更。
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
およびiam:PassRole
の権限を持つ攻撃者は、既存のRDSインスタンスに指定されたロールを追加することができます。これにより、攻撃者は機密データにアクセスしたり、インスタンス内のデータを変更したりすることが可能になります。
DBインスタンスはクラスターの外にある必要があります
潜在的影響: RDSインスタンス内の機密データへのアクセスまたはデータの不正な変更。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する: HackTricks Training GCP Red Team Expert (GRTE)