用途:针对 MongoDB、CouchDB 等 NoSQL 数据库的注入检测与利用,重点在认证绕过与数据提取。
主要能力:
- 识别:JSON 登录请求、Node.js/Express 技术栈、MongoError/CastError/BSONTypeError 报错、mongodb:// 连接串、参数接受对象或数组、CouchDB /_all_docs 与 /_find 端点。
- 认证绕过:将密码改为 {"$ne": ""}、{"$gt": ""} 等操作符;URL 编码形式如 password[$ne]=;用 $regex 枚举用户名。
- 盲注提取:用 $regex 逐字符猜测字段值;$where JavaScript 注入做条件判断与时间盲注;聚合管道 $lookup 跨集合读取。
- 高级利用:ObjectId 时间戳推断、MongoDB Shell 注入、CouchDB Mango 查询注入与 design document 篡改。
- 绕过:Unicode 编码 $、深层嵌套 $not、切换 Content-Type、操作符变体($ne/$gt/$gte/$exists/$in/$nin)。
使用方式:先发正常登录请求记录失败响应,再替换 password 为 {"$ne": ""} 对比差异;JSON 不行则换 URL 编码。工具可用 NoSQLMap:python nosqlmap.py -u http://TARGET/login -p username,password;mongosh mongodb://TARGET:27017;Burp Intruder 做操作符 fuzz。
适用场景:登录表单 JSON 提交、参数出现 $gt/$ne/$regex 等操作符、疑似 MongoDB/CouchDB 后端的目标。
限制:$where 依赖服务端 JavaScript 是否启用,可通过 --noscripting 或 security.javascriptEnabled: false 禁用;MongoDB 8.0 起服务端 JavaScript(含 $where)被 deprecated,但 5.x/6.x/7.x 不应默认视为不可用。CouchDB 篡改 design document 需要 admin 权限。仅限授权测试使用。