用途:面向 Node.js/Express 应用的安全测试技能,围绕高价值漏洞链进行指纹识别、探测与验证,目标是把原型链污染等缺陷推进到 RCE 等严重后果。
主要能力:
- 指纹与环境识别:通过 X-Powered-By、错误信息中的 Node.js 痕迹、package.json/package-lock.json/node_modules 暴露、.js 堆栈路径等信号判断 Node.js/Express 运行时与依赖版本。
- 原型链污染检测:向 JSON body、query 参数注入 proto、constructor.prototype 等载荷,并用后续请求是否回显被污染键来确认。
- 污染到 RCE 链条:面向 child_process 与 vm 等危险汇聚点,覆盖 options.shell/env 污染、lodash template(CVE-2021-23337)、EJS 模板选项污染等路径,并用 OOB 回调确认。
- Express trust proxy 滥用:伪造 X-Forwarded-For / X-Real-IP 尝试绕过 IP 白名单与限流,可用循环伪造 IP 测试登录限流。
- 模板引擎 SSTI:对 EJS/Pug/Handlebars 提交表达式载荷并尝试命令执行,如 <%= 7*7 %> 验证与 process.mainModule.require 链。
- 命令注入:针对 /api/ping、/api/convert、/api/exec 等疑似执行 shell 的端点测试分号、&& 与 DNS 外带。
- /proc/self/environ 泄露:若存在 LFI 或文件读取,尝试读取 environ、cmdline、cwd 以获取云密钥等敏感环境变量。
使用方式:以 curl 为主对 $TARGET 发起分阶段探测,按指纹、污染检测、RCE 链、trust proxy、SSTI、命令注入、环境泄露顺序推进;必要命令保持原样,例如 curl -s -X POST https://$TARGET/api/merge -H "Content-Type: application/json" -d '{"proto": {"polluted": "yes"}}',以及 curl -sI https://$TARGET/ | grep -i "x-powered-by|nodejs|express"。确认需满足:被污染键在未发送时出现在后续响应、OOB 回调收到或响应中回显 id 输出、伪造 IP 被接受且绕过限流或白名单。
适用场景:授权范围内的 Node.js 后端安全评估、漏洞复现与验证。
限制:相关资料未提供具体目标授权方式、完整环境依赖与误报处理说明;SSTI、原型链到 RCE 与 child_process 注入的严重级别为 Critical,trust proxy 绕过限流为 Medium,/proc/self/environ 泄露在含云密钥时为 High。所有测试须在合法授权下进行。