AWS - DynamoDB Enum
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
亚马逊 DynamoDB 被 AWS 提供为一个 完全托管的无服务器键值 NoSQL 数据库,旨在为各种规模的高性能应用提供支持。该服务确保了强大的功能,包括固有的安全措施、不间断的备份、跨多个区域的自动复制、集成的内存缓存和便捷的数据导出工具。
在 DynamoDB 的上下文中,而不是建立传统数据库,创建表。每个表都要求指定一个 分区键,作为 表主键 的一个组成部分。这个分区键,实质上是一个 哈希值,在项目的检索和数据在不同主机之间的分配中起着关键作用。这种分配对于维护数据库的可扩展性和可用性至关重要。此外,还有一个选项可以加入 排序键 以进一步细化数据组织。
默认情况下,DynamoDB 使用一个 **属于亚马逊 DynamoDB 的 KMS 密钥,**甚至不是至少属于您账户的 AWS 管理密钥。
可以 安排 生成 表备份 或按 需创建。此外,还可以为表启用 时间点恢复 (PITR)。时间点恢复为您的 DynamoDB 数据提供连续的 备份,持续 35 天,以帮助您防止意外的写入或删除操作。
还可以将 表的数据导出到 S3,但该表需要启用 PITR。
有一个用于本地 Dynamo 服务的 GUI,如 DynamoDB Local、dynalite、localstack 等,这些可能会很有用:https://github.com/aaronshaf/dynamodb-admin
有方法可以使用 SQL 语法 访问 DynamoDB 数据,因此,典型的 SQL 注入也是可能的。
在 DynamoDB 中,可以使用不同的 条件 来检索数据,就像在常见的 NoSQL 注入中,如果可以 链式添加更多条件以检索 数据,您可能会获得隐藏的数据(或转储整个表)。 您可以在这里找到 DynamoDB 支持的条件:https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
请注意,如果通过 query
或 scan
访问数据,支持 不同的条件。
实际上,Query 操作需要在 主 键中指定 条件 "EQ"(等于) 才能工作,这使得它 更不容易受到 NoSQL 注入(同时也使操作非常有限)。
如果您可以 更改执行的比较 或添加新的比较,您可能会检索到更多数据。
此漏洞基于现已弃用的 dynamodb 扫描过滤器!
DynamoDB 接受 Json 对象以 搜索 数据。如果你发现可以在发送的 json 对象中进行写入,你可以使数据库转储所有内容。
例如,在请求中注入如下内容:
攻击者可以注入类似于:
1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0
修复“EQ”条件,搜索 ID 1000,然后查找所有 Id 字符串大于 0 的数据,即所有数据。
另一个 使用登录的脆弱示例 可能是:
这将容易受到以下攻击:
一些 SDK 允许使用一个字符串来指示要执行的过滤,如:
您需要知道,在DynamoDB中搜索以替换属性值的过滤表达式时,令牌应以**:
字符开头**。这样的令牌将在运行时替换为实际的属性值。
因此,像之前的登录可以通过类似以下内容绕过:
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)