Entry № 837
NoSQL 注入
NoSQL 注入 是什么?
NoSQL 注入通过篡改 NoSQL 数据库的操作符、JSON 结构或查询 DSL 来绕过业务逻辑或窃取数据的注入攻击。
NoSQL 注入攻击的是那些从不可信输入构造文档或键值存储查询的应用程序(如 MongoDB、CouchDB 或 Elasticsearch)。攻击者不是注入 SQL 语法,而是篡改 JSON 结构、$ne 或 $gt 等操作符,或查询语言片段,以实现免凭据登录、返回任意文档,或在引擎支持时触发服务端 JavaScript 执行。盲注变种则通过布尔或时间响应外泄数据。防御措施包括严格的模式校验、将输入强制转换为期望的基本类型、在应当是字符串的位置拒绝对象类型负载、使用驱动提供的查询构造器并显式指定操作符,以及对数据库账户应用最小权限。
● 示例
- 01
向 MongoDB 登录接口发送 {"username": "admin", "password": {"$ne": null}},绕过密码哈希比较。
- 02
在 $where 子句中注入 JavaScript 表达式,从存在漏洞的接口枚举文档。
● 常见问题
NoSQL 注入 是什么?
通过篡改 NoSQL 数据库的操作符、JSON 结构或查询 DSL 来绕过业务逻辑或窃取数据的注入攻击。 它属于网络安全的 攻击与威胁 分类。
NoSQL 注入 是什么意思?
通过篡改 NoSQL 数据库的操作符、JSON 结构或查询 DSL 来绕过业务逻辑或窃取数据的注入攻击。
如何防御 NoSQL 注入?
针对 NoSQL 注入 的防御通常结合技术控制与运营实践,详见上方完整定义。
NoSQL 注入 还有哪些其他名称?
常见的别称包括: NoSQLi。