AWS - DynamoDB Enum
DynamoDB
基本信息
Amazon DynamoDB 被 AWS 提供为一种 完全托管、无服务器、键值 NoSQL 数据库,专为驱动高性能应用而设计,无论其规模如何。该服务确保强大的功能,包括固有的安全措施、不间断的备份、跨多个区域的自动复制、集成内存缓存以及便捷的数据导出工具。
在 DynamoDB 的上下文中,不是建立传统数据库,而是创建表。每个表都要求指定一个 分区键 作为 表的主键 的一个组成部分。这个分区键,本质上是一个 哈希值,在检索项目和在各个主机之间分发数据方面发挥关键作用。这种分发对于维护数据库的可伸缩性和可用性至关重要。此外,还可以选择添加一个 排序键 来进一步细化数据组织。
加密
默认情况下,DynamoDB 使用属于 Amazon DynamoDB 的 KMS 密钥,而不是至少属于您账户的 AWS 托管密钥。
备份 & 导出到 S3
可以安排生成表备份或根据需求创建备份。此外,还可以为表启用恢复到某个时间点 (PITR)。恢复到某个时间点提供了 DynamoDB 数据的连续备份,持续 35 天,以帮助您防范意外的写入或删除操作。
还可以将表的数据导出到 S3,但需要启用PITR。
GUI
有一个用于本地 Dynamo 服务的 GUI,如 DynamoDB Local、dynalite、localstack 等,可能会很有用:https://github.com/aaronshaf/dynamodb-admin
枚举
未经身份验证的访问
AWS - DynamoDB Unauthenticated Access权限提升
AWS - DynamoDB Privesc漏洞利用后
AWS - DynamoDB Post Exploitation持久性
AWS - DynamoDB PersistenceDynamoDB注入
SQL注入
有方法可以使用SQL语法访问DynamoDB数据,因此,典型的SQL注入也是可能的。
NoSQL注入
在DynamoDB中,可以使用不同的条件来检索数据,就像在常见的NoSQL注入中,如果可以链接更多条件来检索数据,您可以获取隐藏数据(或转储整个表)。 您可以在这里找到DynamoDB支持的条件:https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html
请注意,如果通过**query
或scan
访问数据,则支持不同的条件**。
实际上,查询操作需要在主键中指定**条件“EQ”(相等)**才能正常工作,这使其更不容易受到NoSQL注入的影响(也使操作非常有限)。
如果您可以更改执行的比较或添加新的比较,您可以检索更多数据。
原始Json注入
DynamoDB接受Json对象来搜索数据库中的数据。如果您发现可以在发送到搜索的json对象中写入内容,您可以导出整个数据库的内容。
例如,在类似以下请求中注入:
攻击者可以注入类似以下内容:
1000"}],"ComparisonOperator": "GT","AttributeValueList": [{"N": "0
修复"EQ"条件,搜索ID为1000的数据,然后查找所有ID字符串大于0的数据,即所有数据。
:property注入
某些SDK允许使用字符串指示要执行的过滤操作,如:
您需要知道,在DynamoDB中搜索替换扫描项目时过滤表达式中的属性值,令牌应该以**:
字符开头**。这些令牌将在运行时替换为实际的属性值。
因此,类似上一个示例的登录可以通过以下方式绕过:
Last updated