AWS - DynamoDB Post Exploitation
Last updated
Last updated
AWSハッキングを学び、実践する: GCPハッキングを学び、実践する:
詳細については、以下を確認してください:
dynamodb:BatchGetItem
この権限を持つ攻撃者は、プライマリキーによってテーブルからアイテムを取得することができます(テーブルのすべてのデータを要求することはできません)。これは、プライマリキーを知っている必要があることを意味します(テーブルのメタデータを取得することでこれを得ることができます(describe-table
)。
潜在的な影響: テーブル内の機密情報を特定することによる間接的な権限昇格
dynamodb:GetItem
前の権限と似ている これは、取得するエントリのプライマリキーが与えられた場合、潜在的な攻撃者が1つのテーブルから値を読み取ることを許可します:
この権限を使用すると、transact-get-items
メソッドを次のように使用することも可能です:
潜在的な影響: テーブル内の機密情報を特定することによる間接的な権限昇格
dynamodb:Query
潜在的な影響: テーブル内の機密情報を特定することによる間接的な権限昇格
dynamodb:Scan
この権限を使用して、テーブル全体を簡単にダンプすることができます。
潜在的影響: テーブル内の機密情報を特定することによる間接的な権限昇格
dynamodb:PartiQLSelect
この権限を使用して、テーブル全体を簡単にダンプすることができます。
この権限は、次のように batch-execute-statement
を実行することも許可します:
しかし、値を指定してプライマリキーを設定する必要があるため、それほど便利ではありません。
潜在的な影響: テーブル内の機密情報を特定することによる間接的な権限昇格
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
この権限により、攻撃者は自分の選択したS3バケットにテーブル全体をエクスポートすることができます。
注意:これが機能するためには、テーブルにポイントインタイムリカバリが有効になっている必要があります。テーブルにそれが有効かどうかは、次のコマンドで確認できます:
もしそれが有効でない場合は、有効にする必要があり、そのためには**dynamodb:ExportTableToPointInTime
**権限が必要です:
潜在的な影響: テーブル内の機密情報を特定することによる間接的な権限昇格
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
これらの権限を持つ攻撃者は、バックアップから新しいテーブルを作成することができる(または、バックアップを作成してから別のテーブルに復元することもできる)。その後、必要な権限があれば、本番テーブルにはもはや存在しない可能性のあるバックアップからの情報を確認することができる。
潜在的な影響: テーブルバックアップ内の機密情報を特定することによる間接的な権限昇格
dynamodb:PutItem
この権限は、ユーザーがテーブルに新しいアイテムを追加するか、既存のアイテムを新しいアイテムで置き換えることを許可します。同じプライマリキーを持つアイテムがすでに存在する場合、全体のアイテムが新しいアイテムで置き換えられます。プライマリキーが存在しない場合、指定されたプライマリキーを持つ新しいアイテムが作成されます。
潜在的影響: DynamoDBテーブル内のデータを追加/変更できることによるさらなる脆弱性/バイパスの悪用
dynamodb:UpdateItem
この権限は、ユーザーがアイテムの既存の属性を変更したり、新しい属性をアイテムに追加したりすることを許可します。これはアイテム全体を置き換えるのではなく、指定された属性のみを更新します。プライマリキーがテーブルに存在しない場合、操作は指定されたプライマリキーを持つ新しいアイテムを作成し、更新式で指定された属性を設定します。
潜在的な影響: DynamoDBテーブルにデータを追加/変更できることによるさらなる脆弱性/バイパスの悪用
dynamodb:DeleteTable
この権限を持つ攻撃者はDynamoDBテーブルを削除し、データ損失を引き起こすことができます。
潜在的な影響: 削除されたテーブルに依存するサービスのデータ損失と中断。
dynamodb:DeleteBackup
この権限を持つ攻撃者は、DynamoDBのバックアップを削除でき、災害復旧シナリオの場合にデータ損失を引き起こす可能性があります。
潜在的な影響: データ損失と災害復旧シナリオにおけるバックアップからの復元不可能。
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
TODO: これが実際に機能するかテストする
これらの権限を持つ攻撃者は、DynamoDBテーブルでストリームを有効にし、テーブルを更新して変更のストリーミングを開始し、その後ストリームにアクセスしてテーブルの変更をリアルタイムで監視することができます。これにより、攻撃者はデータの変更を監視し、抽出することができ、データ漏洩につながる可能性があります。
DynamoDBテーブルでストリームを有効にする:
ARNやその他の詳細を取得するためのストリームを説明します:
ストリームARNを使用してシャードイテレータを取得します:
シャードイテレータを使用して、ストリームからデータにアクセスし、抽出します:
潜在的影響: DynamoDBテーブルの変更に関するリアルタイム監視とデータ漏洩。
前の権限と似ている これは、取得するエントリのプライマリキーが与えられた場合に、潜在的な攻撃者が1つのテーブルから値を読み取ることを許可します。 を使用することができますが、プライマリキーで許可される唯一の比較(必ず表示される必要があります)は "EQ" であるため、リクエストで全DBを取得するための比較を使用することはできません。
Learn & practice AWS Hacking: Learn & practice GCP Hacking:
Check the !
Join the 💬 or the or follow us on Twitter 🐦 .
Share hacking tricks by submitting PRs to the and github repos.