攻击与威胁
NoSQL 注入
别称: NoSQLi
定义
针对文档型、键值型或图数据库的注入攻击,攻击者将运算符或 JavaScript 注入到查询对象中。
NoSQL 注入针对 MongoDB、CouchDB、DynamoDB、Redis 等使用基于 JSON、BSON 或内嵌 JavaScript 的查询语言的数据库。攻击者不是逃逸字符串,而是篡改查询结构,例如发送 {"$ne": null} 或 {"$where": "..."} 等运算符以绕过身份验证、导出文档或在服务端执行 JavaScript。动态语言(PHP、Node.js)中的自动对象反序列化使得用户输入直接成为查询 DSL 的一部分,攻击因此更易实施。防御措施包括严格的输入类型与模式校验、拒绝用户提供的运算符、使用参数化客户端 API、禁用服务端 JavaScript,以及为数据库角色配置最小权限。
示例
- 向 MongoDB 登录接口提交 {"username": "admin", "password": {"$ne": ""}} 以绕过密码校验。
- 通过 {"$where": "sleep(5000) || true"} 利用时间差异枚举数据。
相关术语
SQL 注入
一种将攻击者控制的 SQL 片段注入到由不受信任输入构造的查询中的攻击,可导致数据泄露、篡改乃至完全控制数据库。
Command Injection
Command Injection — definition coming soon.
Input Validation
Input Validation — definition coming soon.
不安全反序列化
应用对不可信数据进行反序列化的漏洞,攻击者可借此实例化任意对象,常常实现远程代码执行。
OWASP Top 10
OWASP Top 10 — definition coming soon.
认证失效
认证或会话管理存在缺陷,使攻击者得以冒充合法用户或接管账户的一类漏洞。