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