一款用于检测 Node.js HTTP 应用程序中 CVE-2026-111497 的命令行工具。
扫描器会发送四个单字节控制请求,以了解端点如何处理有效的 Brotli JSON、格式错误的 Brotli、不带 JSON 内容类型的请求以及不支持的编码。随后它会流式发送一个 23,068,764 字节的 Brotli 探测载荷,并重复发送有效控制请求。
只有当完整探测载荷到达有效路由响应类别、格式错误响应类别与之不同,且最终控制请求确认端点保持稳定时,目标才会被报告为存在漏洞。这与 Assetnote 内部 postmodule 检测逻辑一致,且不会执行任何命令。
URL 路径会被保留,默认为 /。不会跟随重定向。
每个被测试的端点会收到五个单字节请求和一个 23,068,764 字节的探测载荷。该探测载荷使用 Expect: 100-continue,因此代理可以在请求体上传之前拒绝其声明的大小。
pip install -r requirements.txt
docker build -t node2shell-scanner .
docker run --rm node2shell-scanner -u https://example.com/api
python3 scanner.py -u https://example.com/api
python3 scanner.py -l hosts.txt -t 20 -o results.json
python3 scanner.py -u https://example.com --path /api/json
python3 scanner.py -u https://example.com -H "Authorization: Bearer token"
-u, --url Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Per-request timeout in seconds (default: 60)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable TLS certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show verdict reasons and response snippets
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
结果会打印到终端。使用 -o 时,存在漏洞的主机会以 JSON 格式保存,其中包含比较模式和经过脱敏的请求/响应证据。使用 --all-results 可保存所有判定结果。
由 Assetnote 安全研究团队构建,使用了为 Searchlight 的 Exposure Platform 开发的检测逻辑。