用途:面向NoSQL后端的注入测试与攻击思路整理,强调其与SQL注入的本质差异——NoSQL注入不逃逸字符串字面量,而是注入查询操作符以改变查询逻辑。
主要能力:
- 操作符注入:如将密码字段替换为{"$ne":"invalid"}或{"$gt":""}实现登录绕过;常用操作符包括$ne、$gt、$gte、$lt、$regex、$where、$exists、$in。
- 多种传参方式:JSON请求体、PHP风格数组参数(password[$ne]=invalid)、URL编码中的%24表示$、HTTP参数污染使重复参数被解析为数组。
- 盲注数据提取:利用$regex逐字符匹配形成布尔预言机,可按字符集二分或逐位枚举字段值。
- $where注入:在MongoDB上下文执行JavaScript,可做逻辑滥用与基于sleep()的时间盲注;资料指出其不提供操作系统命令执行,但服务器端JS注入历史上存在RCE顾虑,应视为高风险汇聚点。
- 聚合管道注入:用户输入进入$match或$group阶段时注入操作符绕过过滤;$lookup可跨集合取数,$out可将结果写入可访问集合。
- CouchDB:5984端口暴露时通过_all_dbs、_all_docs读取文档,匿名访问许可时可创建管理员账号。
- Redis:6379端口无认证时可经SSRF或注入写入文件、设置dir与dbfilename后BGSAVE落盘,并列举了AUTH弱口令尝试。
使用方式:手册给出检测载荷(如{"$ne":"invalid"}、{"$gt":""}、[$ne]=invalid等)、测试清单(表单端点改Content-Type为application/json、观察BSON/operator类报错)以及用Python requests进行$regex逐字符提取的脚本模板。
适用场景:API登录、搜索过滤器、查询DSL等由用户输入拼接或组装查询对象的接口测试。
限制:资料未提供具体工具安装命令、版本要求或授权范围说明;所有测试应在合法授权下进行。$where与聚合管道注入的实际影响取决于部署环境,资料未给出通用可利用结论。