gagaltotal/CVE-2026-42945-NGINX-Rift-Toolkit

GitHub: gagaltotal/CVE-2026-42945-NGINX-Rift-Toolkit

这是一个专为CVE-2026-42945设计的NGINX漏洞工具包,提供扫描、修补和利用测试功能。

Stars: 2 | Forks: 1

# CVE-2026-42945 Nginx Rift 漏洞工具包 ![CVSS 评分: 9.8 - 严重](https://img.shields.io/badge/CVSS%20Score-9.8%20Critical-red) ![Python 版本](https://img.shields.io/badge/python-3.7%2B-blue) ![许可证](https://img.shields.io/badge/license-MIT-green) ## 目录 - [概述](#overview) - [CVE 详情](#cve-details) - [功能](#features) - [工具包组件](#toolkit-components) - [系统要求](#requirements) - [安装说明](#installation) - [使用方法](#usage) - [工作流示例](#workflow-examples) - [安全注意事项](#security-considerations) - [故障排除](#troubleshooting) - [参与贡献](#contributing) ## 概述 此工具包提供了一套全面的工具,用于扫描、修补和测试 CVE-2026-42945,这是一个影响 1.26.3(主线)和 1.24.1(稳定版)之前版本的 **nginx 中的严重远程代码执行漏洞**。 当目标系统禁用 ASLR 时,该漏洞利用堆喷射技术通过畸形 HTTP/2 头部解析进行攻击。 ## CVE 详情 | 属性 | 值 | |----------|-------| | **漏洞 ID** | CVE-2026-42945 | | **类型** | 远程代码执行 (RCE) | | **CVSS 评分** | 9.8 (严重) | | **受影响版本** | < 1.26.3 (主线) / < 1.24.1 (稳定版) | | **已修复版本** | 1.26.3+ | | **攻击向量** | 畸形 HTTP/2 头部解析 | | **前提条件** | 目标系统禁用 ASLR | ## 功能 - **网络扫描** - 支持 CIDR 子网扫描和并发主机发现 - **版本检测** - 通过 SSH 进行多发行版 nginx 版本识别 - **自动化修补** - 批量修补网络中的漏洞实例 - **利用测试** - 使用堆喷射技术验证漏洞 - **报告生成** - 生成 HTML 和 JSON 格式报告 - **演练模式** - 在应用前预览更改 - **多认证方式** - 支持 SSH 密钥和密码认证 - **审计日志** - 详细的操作时间戳日志 ## 工具包组件 ### 1. **nginx_scanner.py** - 漏洞扫描器 扫描子网或单个主机以识别易受攻击的 nginx 安装。 **功能:** - CIDR 子网扫描支持 - 并发主机发现和版本检测 - 基于 SSH 的远程版本检查 - 多发行版支持 (Ubuntu, Debian, CentOS, AlmaLinux, RHEL) - HTML 和 JSON 报告生成 - 可自定义 SSH 端口和认证方式 ### 2. **nginx_patcher.py** - 补丁自动化工具 自动将易受攻击的 nginx 实例修补到最新的安全版本。 **功能:** - 跨子网范围的批量修补 - 发行版特定的补丁命令 - 用于安全验证的演练模式 - 目标版本指定 - 详细的补丁执行日志 - 进度跟踪和报告 ### 3. **exploit.py** - 远程代码执行漏洞利用工具 通过堆喷射技术测试 CVE-2026-42945 漏洞。 **功能:** - 针对禁用 ASLR 的 nginx 实例 - 堆喷射缓冲区溢出利用 - 支持多个偏移量以提高可靠性 - 远程命令执行能力 - 连接超时和重试机制 - 详细的执行统计信息 ## 支持的发行版 - **Ubuntu** (所有包含 nginx 的版本) - **Debian** (所有包含 nginx 的版本) - **CentOS** 7+ - **AlmaLinux** - **RHEL** (Red Hat Enterprise Linux) ## 系统要求 - **Python:** 3.7 或更高版本 - **操作系统:** Linux/Unix 环境 ### 依赖项 ``` paramiko (>= 3.0.0) - SSH client library rich (>= 13.0.0) - Terminal formatting and progress bars ``` ## 安装说明 ### 步骤 1: 克隆或下载 ``` git clone https://github.com/gagaltotal/CVE-2026-42945-NGINX-Rift-Toolkit cd CVE-2026-42945-NGINX-Rift-Toolkit ``` ### 步骤 2: 创建虚拟环境 ``` python3 -m venv .venv source .venv/bin/activate ``` ### 步骤 3: 安装依赖项 ``` pip install -r requirements.txt ``` ## 使用方法 ![屏幕截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/368f40c605075020.png) ### 扫描器 (`nginx_scanner.py`) #### 基本子网扫描 ``` python3 nginx_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa ``` #### 单主机扫描 ``` python3 nginx_scanner.py --subnet 192.168.1.10 --user root --key ~/.ssh/id_rsa ``` #### 基于密码的认证 ``` python3 nginx_scanner.py --subnet 10.0.0.0/30 --user admin --password "password" ``` #### 自定义 SSH 端口 ``` python3 nginx_scanner.py --subnet 192.168.1.0/24 --port 2222 --user root --key ~/.ssh/id_rsa ``` #### 生成 HTML 报告 ``` python3 nginx_scanner.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --output report.html ``` #### 扫描器选项 ``` --subnet SUBNET Target subnet in CIDR format (required) --user USER SSH username (default: root) --password PASSWORD SSH password --key KEY_PATH Path to SSH private key --port PORT SSH port (default: 22) --timeout TIMEOUT Connection timeout in seconds (default: 5) --output FILE Output report file (HTML/JSON) --workers WORKERS Number of concurrent threads (default: 20) ``` ### 修补器 (`nginx_patcher.py`) ![屏幕截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/9f7f7a30e1075021.png) #### 基本修补 ``` python3 nginx_patcher.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa ``` #### 演练模式 (预览而不应用) ``` python3 nginx_patcher.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --dry-run ``` #### 指定目标版本 ``` python3 nginx_patcher.py --subnet 192.168.1.0/24 --target-version 1.26.3 --user root --key ~/.ssh/id_rsa ``` #### 自定义 SSH 端口 ``` python3 nginx_patcher.py --subnet 10.0.0.0/30 --port 2222 --user admin --password "password" ``` #### 修补器选项 ``` --subnet SUBNET Target subnet in CIDR format (required) --user USER SSH username (default: root) --password PASSWORD SSH password --key KEY_PATH Path to SSH private key --port PORT SSH port (default: 22) --timeout TIMEOUT Connection timeout in seconds (default: 30) --target-version VERSION Nginx version to patch to (default: latest) --dry-run Show what would be patched without executing --workers WORKERS Number of concurrent threads (default: 10) ``` ### 漏洞利用工具 (`exploit.py`) ![屏幕截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/123755087f075022.png) #### 利用单个目标 ``` python3 exploit.py --target 192.168.1.100 --port 80 ``` #### 使用自定义 Payload ``` python3 exploit.py --target 192.168.1.100 --port 80 --command "cat /etc/passwd" ``` #### 多次喷射尝试 ``` python3 exploit.py --target 192.168.1.100 --port 80 --spray 50 ``` #### 详细输出 ``` python3 exploit.py --target 192.168.1.100 --port 80 --verbose ``` #### 漏洞利用选项 ``` --target HOST Target host IP or domain (required) --port PORT Target port (default: 80) --command CMD Command to execute --spray NUM Number of heap spray attempts (default: 20) --timeout TIMEOUT Connection timeout in seconds (default: 5) --tries NUM Number of exploitation attempts (default: 10) --verbose Enable verbose output ``` ## 工作流示例 ### 场景 1: 完整安全评估 ``` # 步骤 1:扫描网络以发现存在漏洞的实例 python3 nginx_scanner.py --subnet 10.0.0.0/24 --user admin --key ~/.ssh/key --output scan_results.html # 步骤 2:在 scan_results.html 中查看扫描结果 # 步骤 3:修补存在漏洞的实例 python3 nginx_patcher.py --subnet 10.0.0.0/24 --user admin --key ~/.ssh/key # 步骤 4:通过再次运行扫描器验证补丁是否已应用 python3 nginx_scanner.py --subnet 10.0.0.0/24 --user admin --key ~/.ssh/key ``` ### 场景 2: 紧急修补 ``` # 步骤 1:进行 Dry-run 以查看将会修补的内容 python3 nginx_patcher.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa --dry-run # 步骤 2:应用补丁 python3 nginx_patcher.py --subnet 192.168.1.0/24 --user root --key ~/.ssh/id_rsa ``` ### 场景 3: 在易受攻击的系统上测试 ``` # 步骤 1:首先确认系统是否存在漏洞 python3 exploit.py --target 10.0.0.50 --port 80 --verbose # 步骤 2:如果确认成功,建议立即进行修补 python3 nginx_patcher.py --subnet 10.0.0.50 --user root --key ~/.ssh/id_rsa ``` ## 安全注意事项 | 注意事项 | 详情 | |---------------|---------| | **SSH 密钥管理** | 安全存储 SSH 密钥,切勿提交到代码仓库 | | **网络访问** | 生产使用时确保正确的网络分段 | | **测试环境** | 始终在非生产环境先进行测试 | | **日志记录** | 所有操作都会生成详细日志以供审计追踪 | | **ASLR 状态** | 漏洞利用工具要求目标系统禁用 ASLR | | **演练模式** | 使用 `--dry-run` 标志在应用前预览更改 | | **备份** | 修补前务必备份 nginx 配置 | ## 认证方法 ### 基于 SSH 密钥 (推荐) ``` python3 nginx_scanner.py --subnet 10.0.0.0/24 --user root --key ~/.ssh/id_rsa ``` ### 基于密码 ``` python3 nginx_scanner.py --subnet 10.0.0.0/24 --user root --password "password" ``` ### 自定义 SSH 端口 ``` python3 nginx_scanner.py --subnet 10.0.0.0/24 --user root --key ~/.ssh/id_rsa --port 2222 ``` ## 故障排除 ### SSH 连接问题 - **SSH 密钥权限:** `chmod 600 ~/.ssh/id_rsa` - **SSH 服务:** 检查目标系统上 SSH 服务是否运行 - **SSH 端口:** 验证 SSH 端口是否正确 (默认: 22) - **防火墙:** 确保防火墙允许 SSH 连接 ### 版本检测失败 - **Nginx 已安装:** 确认目标系统上已安装 nginx - **权限:** 验证用户具有 sudo 权限或直接 root 访问权限 - **网络:** 检查到目标主机的网络连接 ### 修补失败 - **演练测试:** 使用 `--dry-run` 在不应用的情况下识别问题 - **网络:** 确保目标系统具有互联网连接以下载软件包 - **包管理器:** 验证目标系统上的包管理器正常工作 - **磁盘空间:** 检查目标系统上的磁盘空间 ## 输出报告 扫描器生成多种格式的详细报告: | 格式 | 描述 | |--------|-------------| | **HTML 报告** | 浏览器可查看,包含漏洞摘要、受影响主机、版本详情 | | **JSON 报告** | 机器可读格式,包含完整技术详情 | | **控制台输出** | 实时进度,带颜色编码的结果 | ## 日志记录 所有操作都记录了时间戳以满足审计合规性要求。查看控制台输出以获取详细的执行信息。 ## 参与贡献 欢迎参与贡献!参与方式: 1. Fork 仓库 2. 创建功能分支 (`git checkout -b feature/improvement`) 3. 提交更改 (`git commit -am 'Add improvement'`) 4. 推送到分支 (`git push origin feature/improvement`) 5. 开启 Pull Request ## 免责声明 此工具包仅供授权的安全测试和漏洞评估使用。未经授权访问计算机系统是非法的。用户有责任确保在使用此工具包之前获得适当的授权。 ## 作者 **gagaltotal** - [GitHub](https://github.com/gagaltotal) ## 许可证 本项目采用 MIT 许可证 - 详见 LICENSE 文件。 **最后更新:** 2026-05-20
标签:逆向工具