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 漏洞工具包
  
## 目录
- [概述](#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
```
## 使用方法

### 扫描器 (`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`)

#### 基本修补
```
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`)

#### 利用单个目标
```
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
标签:逆向工具