安全软件
点击放大


![CI]()
![PyPI]()
![PyPI Downloads]()
![Python]()

![Co]()
![OpenSSF Scorecard]()
![Star History]()
中文 | English
> 一款合法授权的若依(RuoYi)专项漏洞扫描器,插件化架构,三态判定(CONFIRMED / SAFE / UNKNOWN)。
> 支持批量扫描、多格式报告、WAF 绕过、漏洞利用链、Web API 等企业级特性。
> 桌面端已上线 —— 单个 exe 双击即用,无需 Python / Docker / 任何环境配置。
> ⭐ 如果这个工具对你有帮助,欢迎点个 Star 支持一下,让更多人看到它。
> 不想碰命令行?直接下载 桌面端单文件版,双击运行。
---
<p align="center">
<img src="assets/demo-scan.gif" alt="Ruoyi-Scan 演示" width="720" />
</p>
> 上图:对内置若依签名靶场执行综合扫描,实时展示风险分布与漏洞列表。
---
> 以下均为对本机签名靶场(lab/,vuln / safe 双模式)的真实运行记录:vuln 模式 23 个漏洞全部命中,safe 模式零误报。
<p align="center">
<img src="docs/images/cli-01-help.png" alt="命令行帮助:Banner 与扫描模式一览" width="900" />
</p>
帮助 —— python main.py -h:5 种扫描模式与全部可选长参数一览。
<br />
<p align="center">
<img src="docs/images/cli-02-scan-running.png" alt="综合扫描进行中:指纹识别、WAF 检测与目录扫描" width="900" />
</p>
综合扫描(进行中) —— 自动指纹识别(cms=ruoyi,置信度 0.70)、WAF 特征检测、目录扫描实时输出。
<br />
<p align="center">
<img src="docs/images/cli-03-scan-results.png" alt="综合扫描结果:漏洞命中与登录爆破成功" width="900" />
</p>
综合扫描(结果) —— 未授权访问、Nacos 配置泄露、SSTI、任意文件读取、定时任务 RCE 等逐一判定;Druid 弱口令 ruoyi/123456 与后台默认口令 admin/admin123 爆破成功。
<br />
<p align="center">
<img src="docs/images/cli-04-bruteforce.png" alt="登录爆破模式:弱口令命中" width="900" />
</p>
登录爆破 —— -l 模式:Druid 弱口令与后台默认口令一键爆破,命中即判定。
<br />
<p align="center">
<img src="docs/images/cli-06-safe-.png" alt="safe 靶场零误报验证:全部判定不存在" width="900" />
</p>
零误报验证 —— 对 safe 靶场(全修复模式)执行漏洞检测:满屏「不存在」,拿不准的如实标注「无法判定」,不凑数、不误报。
<br />
<p align="center">
<img src="docs/images/cli-07-report.png" alt="扫描报告生成:HTML/JSON/CSV/PDF/DOCX/XLSX/SARIF" width="900" />
</p>
报告生成 —— --report reports:扫描摘要(耗时 / 风险分布 / 去重统计)+ 7 种格式报告一键落盘。
---
> 引擎、53 个 POC、Web 控制台全部在编译期嵌入同一个文件。无需 Python、无需 Docker、无需任何环境配置 —— 对没有开发环境的机器,这是最省事的用法。
<p align="center">
<img src="docs/images/desktop-01-o.png" alt="桌面端 · 总览:三态判定分布、扫描趋势与最新发现" width="900" />
</p>
总览 —— 三态判定实时分布、任务趋势、最新发现。SAFE 与 UNKNOWN 在设计上就与 CONFIRMED 分开展示,不做「结果全红」的扫描器。
<br />
<p align="center">
<img src="docs/images/desktop-02-li.png" alt="扫描现场:WebSocket 实时日志、插件进度与结果明细" width="900" />
</p>
扫描现场 —— WebSocket 实时日志流、插件进度、结果明细(可按三态筛选)。下方三态统计卡与引擎在线状态一目了然。
<br />
<p align="center">
<img src="docs/images/desktop-03-.png" alt="漏洞库:53 个 POC 插件与 CVE / CNVD 映射" width="900" />
</p>
漏洞库 —— 53 个 POC 插件一览,含严重度、CVE / CNVD 编号、影响版本区间、WAF 绕过支持标记。
<br />
<p align="center">
<img src="docs/images/desktop-06-settings.png" alt="设置:主题包、主题编辑器与操作员人格" width="900" />
</p>
个性化 —— 4 套主题包、6 个核心色派生 30 个设计 token、操作员人格(11 个预设形象 + 自定义代号)、CRT 扫描线与字体模式。
| 形态 | 文件 | 说明 |
|------|------|------|
| 单文件版 | ruoyi-scan-desktop.exe | 约 46 MB,免安装,双击即用 |
| 安装包 | Ruoyi-Scan_*_x64-setup.exe | NSIS 安装包,约 40 MB,含卸载清理 |
| 命令行 | pip install ruoyi-scan | 适合 CI / 服务器环境 |
| 要点 | 说明 |
|------|------|
| 单文件分发 | PyInstaller 引擎在 cargo 编译期由 build.rs 嵌入壳二进制;运行时自解压到 %LOCALAPPDATA%\Ruoyi-Scan\engine\,按校验和版本戳自动覆盖升级 |
| 进程回收 | 引擎子进程挂 Windows JobObject(KILL_ON_JOB_CLOSE),壳被强杀 / 崩溃时引擎树自动回收,不留孤儿进程 |
| 卸载清理 | NSIS installerHooks 在卸载后清除运行时自解压缓存,避免残留约 30 MB 引擎文件 |
> 更多细节见桌面端文档。
---
> Ruoyi-Scan 不与 nuclei / xray 竞争,而是互补 —— 它们负责广度,我们负责若依生态的深度与判定纪律。
| 维度 | nuclei | xray | Ruoyi-Scan |
|------|--------|------|----------------|
| 定位 | 通用 POC 引擎 | 通用 Web 扫描器 | 若依 / 国产 Java 框架专项 |
| 若依变体识别 | — | — | 5 变体(Vue3 / App / Plus / Cloud / Cloud-Plus) |
| 版本感知 POC 过滤 | — | — | 4.2 / 4.7 / v5 / 3.9.x 版本矩阵 |
| 未确认项的处理 | 无此概念 | 无此概念 | 三态判定:CONFIRMED / SAFE / UNKNOWN |
| 网络异常情形 | 报错或跳过 | — | 强制 UNKNOWN,绝不冒充 SAFE |
| 合规映射 | — | — | 等保 2.0 / OWASP 报告级章节 |
| 安服交付物 | — | 部分 | 7 种格式 + docx 模板引擎 + 整改复测 |
| nuclei 模板 | 原生 | 不支持 | 兼容执行(http 协议子集 + 安全白名单) |
一句话:通用扫描器告诉你「这里可能有东西」;Ruoyi-Scan 告诉你「这个漏洞确实存在 / 确实不存在 / 无法判定」,并直接产出可交付的报告。
> 若依是国内应用最广的开源 Java 后台框架之一,二次开发项目在政企与外包中大量存在。通用工具在它面前的问题是不知道对面是什么 —— 指纹粗糙、变体不辨、版本无感,于是误报与漏报同时发生。我们把「扫得准」做在前面。
---
> 📖 在线文档站 —— 全部文档已编组上线(mkdocs-material),推荐从那里开始。
| 文档 | 说明 |
|------|------|
| 快速上手 | 5 分钟从安装到出第一份报告 |
| 用户指南 | 安装配置、扫描模式、CLI 参数详解 |
| 插件开发教程 | PluginBase、三态判定、entry_points 注册 |
| API 文档 | REST 端点、WebSocket 事件、OpenAPI 规范 |
| 桌面端 | 单 exe 免安装双击即用(引擎内嵌) |
| 贡献指南 | 开发流程、代码规范、提交约定 |
| 变更日志 | 版本历史与变更记录 |
| 发展路线图 | G 系列版本规划、社区路线、度量指标 |
---
---
| 模块 | 说明 |
|------|------|
| plugins/ruoyi/ | 若依 20 个插件(含 2 个 RuoYi-Plus 变体专属;文件读取、SQL 注入、RCE、SSTI、未授权等)+ 5 变体识别(Vue3/App/Plus/Cloud-Plus) |
| plugins/spring/ | Spring Boot 14 个 POC(Actuator、Gateway、Jolokia、Spring4Shell 等) |
| plugins/common/ | 通用漏洞包 11 个插件(.git/.env 泄露、备份文件、CORS、Swagger、中间件未授权等) |
| plugins/jeecgboot/ | JeecgBoot 拓展框架插件包(8 个插件,首个非若依框架拓展实证) |
| 指纹识别 | favicon hash + 特征路径 + 关键字,多 CMS 数据驱动 + 若依变体细分 |
| 组件版本检测 | 20 个 Java 组件(fastjson/SpringBoot/Shiro/Nacos/Log4j/Tomcat/Jenkins/Grafana 等)版本比对 CVE 映射(--components) |
| 三态判定 | CONFIRMED(确认存在)/ SAFE(确认不存在)/ UNKNOWN(无法判定) |
| WAF 绕过 | 11 种绕过策略 + 三态判定保护矩阵 + 成功率追踪 |
| 漏洞利用链 | DAG 拓扑编排 + 条件分支 + 3 条内置链 |
| nuclei 模板兼容 | 直接执行 nuclei-templates YAML 模板(--nuclei,http 协议子集 + 安全白名单) |
| 插件模板仓库 | 导出/manifest/Ed25519 强制验签/--plugin-update 社区分发闭环 |
| AI POC 生成 | --ai 自然语言生成插件(LLM 自验证回灌,无 Key 降级规则模板) |
| AI 报告解读 | --ai-report zh\|en 自动生成漏洞分析与修复优先级 |
| 批量扫描 | -f targets.txt 多目标 + 批量汇总报告 |
| 报告输出 | HTML(SVG 图表)/ JSON / CSV / PDF / Word / Excel / SARIF + 版本对照表 |
| Web API | FastAPI REST + WebSocket 实时推送 + Web 控制台 + 权限分级(read/scan/admin)+ 定时扫描 |
| 并发限速 | ThreadPoolExecutor + 令牌桶(锁外 sleep,无并发退化) |
| 验证码处理 | 自动探测 / OCR 识别 / 跳过 三模式 |
| 多版本适配 | RuoYi 4.2 / 4.7 / v5 / v3.9.x 版本感知 POC 过滤 |
| 端口扫描 | TCP 端口扫描 + 服务识别 + Banner 抓取 |
| 被动代理 | HTTP/HTTPS 代理,捕获流量自动扫描 |
| OAST 带外检测 | 自建回调服务器 + 6 种 payload 模板(SSRF/XXE/SQL盲注/RCE盲注/LDAP/命令注入) |
| 业务逻辑检测 | IDOR / 越权 / 参数篡改 / 竞争条件 4 类检测器 |
| 认证后深度扫描 | --auth-surface 登录态接口资产盘点 + 越权矩阵(匿名重放判未授权 / 低权重放判垂直越权) |
| CVE 同步 | NVD REST API + 24h TTL 缓存 + CWE→OWASP/等保 合规映射 |
| SIEM 集成 | ECS / CEF / LEEF / JSON 4 格式导出 + Syslog 转发 |
| 异步引擎 | ThreadPoolExecutor 并发扫描 + aiohttp 可选异步 HTTP |
| 分布式扫描 | Redis Master-Worker 队列 + Standalone 降级模式 |
| 结果缓存 | SQLite 持久化 + SHA256 键 + TTL + 命中率统计 |
| 扫描模板 | quick / deep / compliance / dengbao 4 种预设策略 |
| 认证扫描 | Cookie / Token / Bearer / 自动登录 4 种认证注入 |
| 国际化 | 中英文报告切换(--lang zh|en) |
| 插件 SDK | 模板生成 + 验证 + 枚举(--plugin-init / --plugin-check) |
| CI/CD 集成 | 严重度阈值退出 + GitHub Code Scanning(SARIF)+ GitLab/Jenkins 模板 |
| 漏洞知识库 | 离线 HTML Wiki + JSON API |
---
前往 Releases 页面 下载最新 .whl 文件,然后:
Ruoyi-Scan 提供生产就绪的 Docker 镜像(多阶段构建、非 root 用户)。
构建镜像
扫描目标
Web API 服务
Docker Compose 一键部署
| 服务 | 端口 | 说明 |
|------|------|------|
| scanner | - | 扫描器 CLI(通过 docker compose run 调用) |
| api | 8000 | FastAPI Web API + WebSocket + Web 控制台 |
| lab-ruoyi | 8080 | 若依签名靶场(vuln 模式) |
| lab-spring | 8091 | Spring Boot 签名靶场(vuln 模式) |
| prometheus | 9090 | 指标采集(--profile monitor) |
| grafana | 3000 | 监控面板(--profile monitor) |
> 完整参数说明请运行 python main.py -h。以下按功能分组列出全部参数。
#### 核心扫描模式
| 参数 | 说明 |
|------|------|
| -h | 帮助信息 |
| -u <url> | 综合扫描(目录+漏洞+爆破) |
| -m <url> | 目录扫描 |
| -p <url> | 漏洞检测 |
| -l <url> | 登录爆破 |
| -f <file> | 批量扫描(从文件读取目标列表) |
| --cms <ruoyi\|spring> | 手动指定 CMS(跳过指纹识别) |
| --pass-level <lvl> | 口令字典级别 top100/top1000/full |
| --template <name> | 扫描模板(quick/deep/compliance/dengbao) |
| --template-list | 列出所有可用模板 |
| --config <path> | YAML 配置文件(CLI 参数优先级高于配置) |
#### 网络与并发
| 参数 | 说明 |
|------|------|
| --proxy <url> | 代理地址(如 |
| --proxy-file <f> | 代理池文件(每行一个代理 URL) |
| --proxy-rotate <s> | 代理轮换策略 round-robin/random/least-fail |
| --threads <n> | 并发线程数 |
| --rate <n> | 每秒请求数(0=不限速) |
| --timeout <n> | 请求超时秒数 |
| --debug | 调试模式(请求日志输出到 stderr) |
#### 信息收集(D14)
| 参数 | 说明 |
|------|------|
| --crawl | 启用主动爬虫 |
| --crawl-depth <n> | 爬虫最大深度(默认 2) |
| --crawl-max-pages <n> | 爬虫最大页面数(默认 50) |
| --subdomain | 启用子域名枚举 |
| --js-extract | 启用 JS 端点提取 |
| --portscan | 端口扫描 + 服务识别 |
| --ports <p1,p2> | 自定义端口列表(逗号分隔) |
| --passive | 启动被动代理模式 |
| --passi <addr> | 代理监听地址(默认 127.0.0.1) |
| --passi <n> | 代理监听端口(默认 8080) |
#### 报告与输出
| 参数 | 说明 |
|------|------|
| --report <dir> | 报告输出目录 |
| --report-format <f> | 报告格式 html/json/csv/pdf/docx/xlsx/sarif |
| --no-dedup | 关闭结果去重聚合 |
| --lang <zh\|en> | 报告语言(默认 zh) |
| --diff <old.json> | 与历史扫描报告对比 |
| --diff-only <old> <new> | 仅对比两个 JSON 报告 |
| --sa | 保存本次扫描结果为基线 |
#### WAF 绕过与利用链
| 参数 | 说明 |
|------|------|
| --bypass-waf <auto\|on\|off> | WAF 绕过策略(默认 auto) |
| --chain <name> | 执行漏洞利用链 |
| --chain-list | 列出所有可用的漏洞利用链 |
#### 认证扫描(D26)
| 参数 | 说明 |
|------|------|
| --auth <type=value> | 认证注入(可多次指定) |
| --auth-file <path> | 从文件加载认证信息 |
| --auth-login <user:pass> | 自动登录获取认证 |
#### Web API 服务(D9/D11)
| 参数 | 说明 |
|------|------|
| --serve | 启动 Web API 服务(FastAPI + WebSocket + Web 控制台) |
| --host <addr> | API 服务监听地址(默认 0.0.0.0) |
| --port <n> | API 服务监听端口(默认 8000) |
| --api-key <key> | API Key 鉴权 |
| --cors-origins <o> | 允许的 CORS 源(逗号分隔) |
| --db-path <path> | SQLite 任务持久化数据库路径 |
> 详细的 API 端点说明、请求/响应示例、WebSocket 事件格式请参考 API 使用指南。
> OpenAPI 3.0 规范可通过 python scripts/export_openapi.py 导出至 docs/openapi.json。
#### OAST 带外检测(D30)
| 参数 | 说明 |
|------|------|
| --oast | 启用 OAST 带外检测 |
| --oast-server | 启动 OAST 回调服务器 |
| --oast-host <addr> | OAST 服务器监听地址 |
| --oast-port <n> | OAST 服务器监听端口 |
#### 业务逻辑检测(D31)
| 参数 | 说明 |
|------|------|
| --logic-scan | 业务逻辑漏洞检测(IDOR/越权/参数篡改/竞争条件) |
| --logic-endpoints <file> | 业务扫描端点列表文件 |
| --logic-concurrency <n> | 竞争条件检测并发数 |
#### 认证后深度扫描(G1)
| 参数 | 说明 |
|------|------|
| --auth-surface | 登录态接口资产盘点 + 越权矩阵(需 --auth-login user:pass 高权凭证) |
| --surface-account <user:pass> | 低权账号(垂直越权对比,可多次指定,取第一个登录成功者) |
| --surface-output <path> | 资产清单 JSON 输出路径 |
#### CVE 同步(D32)
| 参数 | 说明 |
|------|------|
| --c | 同步 NVD CVE 信息 |
| --cve-id <CVE-ID> | 查询单个 CVE 信息 |
| --n <key> | NVD API Key(提高速率限制) |
#### SIEM 集成(D33)
| 参数 | 说明 |
|------|------|
| --siem-export <fmt> | 导出 SIEM 格式(ecs/cef/leef/json) |
| --siem-output <path> | SIEM 导出路径 |
| --siem-syslog <host:port> | 发送到 Syslog 服务器 |
| --siem-protocol <p> | Syslog 协议 udp/tcp |
#### 异步引擎(D34)
| 参数 | 说明 |
|------|------|
| --async | 启用异步扫描引擎(ThreadPoolExecutor) |
| --async-workers <n> | 异步并发线程数(默认 10) |
#### Web UI 控制台(D35)
| 参数 | 说明 |
|------|------|
| --web-ui | 生成 Web UI 控制台(单页 HTML) |
| --web-ui-output <path> | Web UI 输出路径 |
| --web-ui-api <url> | Web UI 连接的 API 地址 |
#### 分布式扫描(D36)
| 参数 | 说明 |
|------|------|
| --distributed <mode> | 分布式模式(master/worker/standalone) |
| --redis-url <url> | Redis 连接 URL |
| --distributed-rate <n> | 分布式全局限速(每秒请求数,0 不限速) |
| --worker-max-tasks <n> | Worker 最大任务数(0 不限) |
| --distributed-timeout <n> | 分布式超时秒数(默认 600) |
#### 结果缓存(D37)
| 参数 | 说明 |
|------|------|
| --cache | 启用扫描结果缓存(SQLite) |
| --cache-ttl <n> | 缓存有效期秒数(默认 3600) |
| --cache-db <path> | 缓存数据库路径 |
| --cache-stats | 查看缓存统计 |
| --cache-clear | 清除过期缓存 |
| --cache-clear-all | 清除全部缓存 |
#### 通知(D21)
| 参数 | 说明 |
|------|------|
| --notify <type=target> | 扫描完成通知(可多次指定) |
#### 插件 SDK(D25)
| 参数 | 说明 |
|------|------|
| --plugin-init <name> | 生成插件模板 |
| --plugin-check <path> | 验证插件文件完整性 |
| --plugin-list | 列出所有已加载插件 |
| --category <cat> | 插件类别 ruoyi/spring/common |
#### CI/CD 集成(D28)
| 参数 | 说明 |
|------|------|
| --ci | CI 模式(严重度超阈值时退出码非 0) |
| --se <lvl> | CI 失败阈值 low/medium/high(默认 high) |
| --ci-init <platform> | 生成 CI 配置(github/gitlab/jenkins) |
#### 漏洞知识库(D29)
| 参数 | 说明 |
|------|------|
| --wiki | 生成漏洞知识库(HTML Wiki + JSON API) |
| --wiki-output <path> | 知识库输出路径 |
---
核心命令只有两个:-p(单目标漏洞扫描)和 -u(综合扫描)。两者区别:
| 对比项 | -p 单目标漏洞扫描 | -u 综合扫描 |
|--------|----------------------|----------------|
| 执行内容 | 仅执行 vuln 类插件(RCE、文件读取、越权、信息泄露等漏洞判定) | 全流程依次执行:recon 信息收集(目录扫描、目录列表探测)→ vuln 漏洞检测 → brute 弱口令爆破(Druid、默认口令等) |
| 特点 | 速度快、请求量小,单点漏洞确认 | 完整风险评估,耗时较长 |
| 适合场景 | 已知目标,只想快速确认是否存在漏洞 | 需要对目标做一次全面评估 |
> 仍不清楚该选哪种?可参考 issue #1 的讨论(两种模式的区别详解)。
---
---
---
欢迎贡献 POC 与改进:
python main.py --plugin-init <name> 生成骨架 → 实现 ()(三态判定)→ --plugin-check 验证 → PR(模板含完整 checklist)> 贡献 POC 前请先在自建靶场(lab/)或授权目标上复现,确保判定特征真实可靠。
---
本工具仅用于授权范围内的安全测试与学习研究。不得用于未授权目标。涉及利用的插件默认仅做存在性验证,不做实际破坏。
供应链验证:Release 产物附带 SHA256 校验和,可独立验证;v1.4.3 起同时提供 SLSA 构建来源证明。
> v1.4.2 及更早版本没有来源证明——证明步骤在 v1.4.2 发布后 48 分钟才合入 release.yml。
> 对这些版本请只用校验和验证,gh attestation 会返回 not found。
---
MIT License © 2026 XIABAI
开发语言:Python
Star 数:41
该项目属于安全软件方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕RuoYi (若依) dedicated vulnerability scanner: plugin architecture, three-state verdict, WAF bypass, exploit chains, AI POC generation, nuclei compatible. 若依专项漏洞扫描器展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | ruoyi-scan - RuoYi (若依) dedicated vulnerability scanner: plugin |
| 所属分类 | 安全软件 |
| 发布作者 | admin |
| 发布时间 | 2026-10-05 22:47:34 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 256 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |