🎯 中文 OA / 国产中间件专项 Web 漏洞检测器 | 三级检测链路 · 规则级证据 · 低误报 | 通用漏洞 Nuclei 兜底(12.5w 模板)
376 个自动化测试(pytest 实测口径) · 靶机验证(Metasploitable 2 / DVWA) · 12 种 OA 系统专项检测
📌 项目定位(ADR-0001):中文 OA / 国产中间件专项检测器,一条命令出可复核报告。通用检测由内置 Nuclei 阶段兜底。 领域术语见 CONTEXT.md。
📈 v2.2.0 新特性:AI 误报复核(--ai-verify)· MCP Server(--serve 给 Claude/ChatGPT)· MCP 目标检测 · GraphQL introspection 检测 · SPA 爬取(--js-render)· OA mock 靶场实测闭环(泛微/Nacos/Jenkins + 版本过滤负样本) 📈 测试覆盖路线图:当前 376 个测试集中在 SQLi/XSS/RCE/SSRF/OA 等核心检测器。 v2.0 新特性:OA专项检测 / WebShell / 弱口令 / 子域名枚举 / Nuclei 模板集成 规划中(roadmap):多引擎聚合(AWVS/Nessus 集成层已实现,待接入主流程)、Metasploit 验证链、DOM XSS(需 headless 验证)
# 一条命令:自动分流靶机/实战,流式爬测协同
python -m wvs scan https://target.com --insecure --rate 10
# 全量扫描(含所有 lite 模块)
python -m wvs scan https://target.com --all-modules
# 靶机自动登录 → 爬取 → 检测
# 实战跳过靶场路径 → 浅爬30页 → 即爬即测
# 批量扫描
python -m wvs batch targets.txt
# Web UI(推荐)
python web_ui/app.py
# 浏览器访问 http://localhost:5000
| 模块 | 检测维度 | 层级 |
|---|---|---|
| SQL 注入 | 8种: error/union/boolean-blind/time-based/stacked/二阶/宽字节/OOB | 🟢 核心 |
| XSS | 5种: reflected/stored/Polyglot/mXSS/SSTI(DOM XSS 待 headless 验证,见 Roadmap) | 🟢 核心 |
| OA 专项 | 12种: 泛微/通达/金蝶/蓝凌/致远/用友/禅道/万户/Nacos/Spring/Jenkins/Confluence | 🟡 Lite |
| WebShell | 路径扫描 + 内容特征 + 启发式检测 | 🟡 Lite |
| 弱口令 | 表单登录 + phpMyAdmin + Tomcat Manager | 🟡 Lite |
| 子域名 | DNS爆破 + crt.sh 证书透明度 | 🟡 Lite |
| CMDi / LFI / RCE / SSRF / XXE | 通用漏洞检测 | 🟡 Lite |
| sensitive / api / waf / jspathfinder | 信息收集 + 绕过 | 🟡 Lite |
| 模块 | 说明 |
|---|---|
| CMDi / LFI / RCE / SSRF / XXE | 通用漏洞检测 |
| sensitive / api / waf / jspathfinder | 信息收集 + 绕过 |
| mcp / graphql | MCP 工具泄露检测 · GraphQL introspection/批量查询 |
| 第三方集成 | Nuclei · sqlmap · ffuf · Wappalyzer |
| 报告格式 | HTML · JSON · CSV · Markdown · Console |
- Nuclei 12.5w PoC 引擎 — 扫描主流程默认启用(
--no-nuclei关闭):CLI 可用走智能模板扫描,不可用走内置内容特征回退(无"可达即报") - OA 三级检测链路 — 内容指纹识别(title/正文/响应头)→ 版本识别(Jenkins/Nacos/Spring…)→ 规则级响应证据验证 + 版本过滤(如 Nacos 1.x 用户列表未授权)
- 扫描断点恢复 — 30 秒间隔落盘 checkpoint,
--resume合并已发现漏洞并跳过已完成模块 - 误报治理基线 — 全部检测判定基于响应证据(baseline 排除/内容特征),仅路径可达不再视为漏洞
- 流式检测 — 爬取即检测,不等全部爬完(30页实战 / 150页靶机)
- 双路径自动分流 — 检测到靶机IP/路径则走靶机流程,否则走实战流程
- 三层降噪 — 内容特征 + 尺寸聚类 + 校准匹配
- 规划中 — 多引擎聚合(AWVS/Nessus/sqlmap 一键调度)、Metasploit 漏洞验证链
# AI 误报复核(官方 OpenAI 兼容 API,无 key 时静默跳过)
export LLM_API_KEY=sk-xxx
python -m wvs scan https://target.com --ai-verify
# AI 报告摘要
python -m wvs ai-report scan_reports/report_xxx.json -o summary.md
# MCP Server — 让 Claude/ChatGPT 直接驱动扫描(pip install "rayscan[mcp]")
python -m wvs mcp # http://127.0.0.1:18000/mcp,工具: scan/list_modules/get_report
# 新增 lite 模块(--all-modules):mcp(MCP 工具泄露检测)、graphql(introspection/批量查询)
python -m wvs scan https://target.com --all-modules
# 实验性 SPA 爬取(pip install "rayscan[jsrender]")
python -m wvs scan https://spa-target.com --js-renderRayScan 能自动识别并检测以下 OA/中间件系统:
泛微Ecology · 通达OA · 金蝶Kingdee · 蓝凌Landray
致远Seeyon · 用友Yonyou · 禅道Zentao · 万户Whir
Nacos · Spring Boot · Jenkins · Confluence
检测类型:SQL注入 / RCE / 文件上传 / 认证绕过 / 配置泄露 / 未授权访问
检测链路:内容指纹识别 → 版本识别 → 规则级响应证据验证 + 版本过滤。 仅路径可达不再视为漏洞(S1 误报治理)。详见 OA 检测规则。
# 一键部署 Nuclei 模板
./scripts/deploy_nuclei_templates.sh
# 扫描默认自动运行 Nuclei 阶段(智能模板选择;无 CLI 时走内置回退)
python -m wvs scan https://target.com
# 禁用 Nuclei 阶段
python -m wvs scan https://target.com --no-nuclei# 长任务中断后,从上次 checkpoint 恢复(合并已发现漏洞 + 跳过已完成模块)
python -m wvs scan https://target.com --resume以下能力已在 wvs/integrations/ 实现集成层,但尚未接入主扫描流程,当前版本不生效:
- 多引擎聚合 — AWVS / Nessus / sqlmap 一键调度 + 结果去重合并
- Metasploit 漏洞验证链 — MSF RPC 自动匹配 exploit 模块验证漏洞真实性
接入完成后将随版本发布启用,详见 技术演进规划。
RayScan 在 Metasploitable 2(DVWA v1.0.7)靶机上的扫描结果:
┌────────────────────────────────────────────────────────────┐
│ RayScan 2.2.0 扫描目标: http://192.168.18.131 │
│ 模块: sqli, xss (核心专精) │
│ 速率: 10 req/s │
└────────────────────────────────────────────────────────────┘
[*] Phase 1/4: Crawling + streaming detection...
[Crawler] 30 pages, 100 endpoints
[+] Detected lab target (dvwa), auto-authenticating...
[+] Auth: DVWA login OK (2 cookies)
[*] Phase 2/4: Streaming detection (10 batches)...
[sqli] Batch 1/10: 0 vulns
[sqli] Batch 4/10: Found UNION injection in id parameter
[xss] Batch 2/10: Found reflected XSS (context-aware)
[xss] Batch 5/10: Found Polyglot XSS
[xss] Batch 7/10: Found SSTI: {{config}} reflected
============================================================
扫描完成!发现 83 个漏洞
============================================================
[MEDIUM] Sensitive Path Exposed: /test/ (1x)
[MEDIUM] Sensitive Information: password leak (1x)
[MEDIUM] Sensitive Path Exposed: /phpinfo.php (1x)
[LOW] Server Version Disclosure (80x)
============================================================
| 漏洞类型 | 数量 | 详情 |
|---|---|---|
| 🔴 敏感路径泄露 | 3 | /test/ 目录可读、/phpinfo.php 暴露 PHP 配置、phpMyAdmin 返回密码字段 |
| 🟡 版本指纹泄露 | 80 | Apache/2.2.8 (Ubuntu) DAV/2 — 确定靶机为 Metasploitable 2 |
| 🟢 SQL 注入 | 5 用户 | UNION 注入提取 users 表全部账号密码(MD5 可逆) |
| 🟢 LFI | 可读 /etc/passwd | 任意文件包含确认 |
-- SQLi 提取结果:
-1' UNION SELECT 1,GROUP_CONCAT(user,0x3a,password) FROM users--
admin:5f4dcc3b5aa765d61d8327deb882cf99 → password
gordonb:e99a18c428cb38d5f260853678922e03 → abc123
1337:8d3533d75ae2c3966d7e0d4fcc69216b → charley
pablo:0d107d09f5bbe40cade3de5c71e9e9b7 → letmein
smithy:5f4dcc3b5aa765d61d8327deb882cf99 → passwordgit clone https://github.com/xiabai2008/rayscan
cd RayScan
pip install -e ".[dev]"docker build -t rayscan .
docker run rayscan scan http://example.com
# Or with docker-compose
TARGET_URL=http://example.com docker-compose uppip install flask
python web_ui/app.py
# 浏览器访问 http://localhost:5000# Quick scan(自动模式:靶机/实战分流)
python -m wvs scan http://example.com
# 全量扫描(含所有 lite 模块:OA/WebShell/弱口令/子域名等)
python -m wvs scan http://example.com --all-modules
# 批量扫描
python -m wvs batch targets.txt
# 列出所有可用模块
python -m wvs list-modules# 只跑指定模块(sqli/xss 为 core 默认加载,其余模块用 --all-modules 启用)
python -m wvs scan http://example.com --all-modules
# Profile 方式(内置 default / src-quick / pentest-full / sqli-only)
python -m wvs profile list
python -m wvs use src-quick -u http://example.com| 参数 | 说明 | 默认值 |
|---|---|---|
--rate |
请求速率(req/s) | 10 |
--all-modules |
启用全部 Lite 模块(OA/WebShell/弱口令/子域名等) | 关 |
--insecure |
跳过 SSL 证书校验 | 关 |
--no-nuclei |
关闭 Nuclei 阶段 | 开(默认启用) |
--resume |
从上次 checkpoint 恢复 | 关 |
-o / -f |
报告输出路径 / 格式(json/html/csv/md) | json |
--timeout |
扫描总超时(分钟) | — |
config.set("crawl_depth", 2) # 爬取深度
config.set("crawl_max_urls", 100) # 最大爬取URL数(实战浅爬 / 靶机深爬自动分流)
config.set("concurrent_endpoints", 10) # 并发检测数
config.set("timeout", 15) # 请求超时(s)
config.set("verify_ssl", False) # 是否验证SSL证书
config.set("retry_count", 1) # 失败重试次数python -m wvs profile list # 列出内置 Profile
python -m wvs use src-quick -u http://example.com # 按 Profile 扫描内置 Profile:default / src-quick / pentest-full / sqli-only。
适合不想敲命令的用户,浏览器图形化操作,支持实时日志流。
# 安装依赖
pip install flask
# 启动 Web 服务
cd web_ui && python app.py
# 浏览器打开 http://localhost:5000| 特性 | 说明 |
|---|---|
| 🎨 深色/浅色主题 | 一键切换 |
| 📐 响应式布局 | 手机/电脑自动适配 |
| ⚡ 实时日志流 | 和 CLI 完全一致的输出 |
| 📋 即时结果 | 发现漏洞立刻显示 |
扫描完成后,结果以 JSON/HTML/CSV 格式输出,默认保存到当前目录。
# 指定输出文件和格式
python -m wvs scan http://example.com -o report.json -f json
python -m wvs scan http://example.com -o report.html -f html核心配置在 wvs/config.py 中,常用可调参数:
config.set("crawl_depth", 2) # 爬取深度
config.set("crawl_max_urls", 100) # 最大爬取URL数
config.set("concurrent_endpoints", 10) # 并发检测数
config.set("timeout", 15) # 请求超时(s)
config.set("verify_ssl", False) # 是否验证SSL证书
config.set("retry_count", 1) # 失败重试次数如果需要把 RayScan 作为库嵌入自己的工作流,直接使用 wvs 包 API:
import asyncio
from wvs.config import ConfigManager
from wvs.core import HTTPPool, WAVScanner
from wvs.models import ScanTarget
async def my_scan():
config = ConfigManager()
config.set("crawl_depth", 2)
session = HTTPPool(config)
scanner = WAVScanner(config, session)
scanner.load_all_modules()
target = ScanTarget(url="http://your-target.com")
result = await scanner.scan(target)
print(f"Found {len(result.vulnerabilities)} vulnerabilities")
asyncio.run(my_scan())| 模块 | 检测类型 |
|---|---|
sqli |
SQL 注入 (error-based / union / boolean-blind / time-based / stacked) |
xss |
跨站脚本 (反射型/存储型) |
cmdi |
命令注入 |
lfi |
本地文件包含 |
rce |
远程代码执行 |
ssrf |
服务端请求伪造 |
xxe |
XML 外部实体注入 |
api |
API 安全检测 |
sensitive |
敏感信息泄露 |
waf |
WAF 检测与绕过 |
jspathfinder |
JavaScript 端点发现 |
| 工具 | 用途 | 安装方式 |
|---|---|---|
| Nuclei | 漏洞模板扫描 | pip install nuclei-python |
| sqlmap | SQL 注入深度利用 | 需单独安装 |
| ffuf | 模糊测试 | 需单独安装 |
| Wappalyzer | 技术栈识别 | pip install python-Wappalyzer |
RayScan/
├── wvs/ # 核心扫描库
│ ├── core/ # 扫描引擎(scanner/orchestrator/stages/爬虫/会话/限速/OOB/被动代理)
│ ├── modules/ # 18 个检测模块(sqli/xss/oa/webshell/weakpass/subdomain…)
│ ├── integrations/ # 第三方集成(Nuclei/sqlmap/ffuf/AWVS…)
│ ├── reporting/ # 报告(HTML/JSON/CSV/Markdown/Console)
│ ├── profiles/ # 扫描配置 Profile
│ └── plugins/ # 认证插件
├── web_ui/ # Web UI(Flask)
├── rules/ # 检测规则
├── scripts/ # 脚本
├── scan_reports/ # 扫描报告输出(本地)
├── examples/ # 示例代码
├── docs/ # 技术文档(adr/ audit/ agents/)
├── tests/ # 测试
├── CONTEXT.md # 领域词汇表
├── pyproject.toml # 项目配置
└── LICENSE # MIT 许可证
| 能力 | 状态 | 靶机验证 |
|---|---|---|
| SQL 注入 | ✅ error-based / union / boolean-blind / time-based | ✅ Metasploitable 2 — UNION 注入提取 5 用户密码 |
| XSS | ✅ 反射型 / 存储型 | ✅ 靶机验证通过(security=low) |
| 命令注入 | ✅ 高精度 | ⬜ 靶机未开放,但检测引擎就绪 |
| LFI | ✅ 本地文件包含 | ✅ Metasploitable 2 — 读取 /etc/passwd 成功 |
| SSRF | ✅ 服务端请求伪造 | ⬜ 待验证 |
| XXE | ✅ XML 外部实体注入 | ⬜ 待验证 |
| RCE | ✅ 远程代码执行 | ⬜ 待验证 |
| 敏感信息泄露 | ✅ 高覆盖 | ✅ Metasploitable 2 — 发现 /test/、phpinfo.php、phpMyAdmin 密码泄露 |
| WAF 绕过 | ✅ 多策略 | ⬜ 待验证 |
| API 扫描 | ✅ API 安全检测 | ✅ Metasploitable 2 — 80 个 Server 版本泄露 + 密码字段发现 |
| 第三方集成 | ✅ Nuclei, sqlmap, ffuf, Wappalyzer | ⬜ 需要独立安装第三方工具 |
| 版本 | 说明 |
|---|---|
| RayScan 2.1 | 可解释检测 --explain / 被动扫描 passive / 一键演示 demo / 规则管理 rules / IDOR·越权·认证绕过 / gentle 合规预设 / ScanOrchestrator 编排层 |
| RayScan 2.0 | 全域升级版 — OA 专项 / WebShell / 弱口令 / 子域名 / Nuclei PoC(多引擎聚合与 MSF 验证链规划中,见 Roadmap) |
| RayScan 1.0 | 正式开源版(基于 WVS v19.2) |
| WVS v19 / v19.2 | 扫描引擎重构,集成框架升级 |
| WVS v18 / v18.4 | 高级检测模块 + 企业级扫描能力 |
| WVS v17 | 模块化架构重构 |
| WVS v16 | 插件系统 + 多报告格式 |
| WVS v15 | 基础扫描框架搭建 |
| WVS v1~14 | 早期版本开发迭代 |
详见 更名记
本工具仅供获得明确授权的安全测试、渗透测试及漏洞研究使用。 未经授权扫描、攻击他人系统属于违法行为,使用者需自行承担一切法律责任。
使用本工具即表示您已阅读并同意上述条款。
MIT License — Copyright (c) 2026 xiabai2008


