RuoYi-Scan 若依版本兼容性矩阵
生成日期:2026-09-07 | 工具版本:v1.2.4 | 维护者:雪山乘客
1. 概述
本文档记录 Ruoyi-Scan v1.1 对各若依(RuoYi)框架版本的检测模块覆盖情况, 帮助使用者快速评估对目标版本的检测能力,也为后续 POC 开发提供版本适配参考。
2. 若依版本里程碑
| 版本 | 关键变化 | 影响 |
| 4.2.0 | 首次发布含 params[dataScope] SQL 注入;/common/upload 扩展名校验弱 | SQL 注入 + 文件上传可利用 |
| 4.6.0 | 修复 params[dataScope] SQL 注入;加强 /common/upload 扩展名校验 | SQL 注入修复,文件上传加固 |
| 4.7.0 | 收紧 /monitor/job/edit 白名单;修复路径穿越 (/common/download/resource) | 定时任务 RCE + 文件读取修复 |
| 4.7.8 | 当前最新单机稳定版(本工具靶场版本) | 仅剩 SSTI / 配置类漏洞 |
| 5.0.0 | RuoYi-Vue 前后端分离,JWT 鉴权,接口前缀 /prod-api/ | 传统 Cookie 认证链路失效 |
| Cloud | RuoYi-Cloud 微服务版,Nacos + Gateway + 前后端分离 | 新攻击面:Nacos 配置泄露 |
3. 版本-模块覆盖矩阵
图例
| 符号 | 含义 |
| ✅ | 覆盖(POC 已验证通过) |
| ⚠️ | 部分覆盖(依赖目标配置) |
| ❌ | 不适用(该版本已修复漏洞或架构不支持) |
| 🔵 | 仅 RuoYi-Cloud 版本适用 |
矩阵
| 检测模块 | 严重度 | <4.6.0 | 4.6.x | 4.7.x | 5.0.x | Cloud | 说明 |
| SQL 注入 (role) | high | ✅ | ❌ | ❌ | 🔵 | 🔵 | >=4.0,<4.6 — 4.6.0 修复 |
| SQL 注入 (dept) | high | ✅ | ❌ | ❌ | 🔵 | 🔵 | >=4.0,<4.6 — 4.6.0 修复 |
| 任意文件读取 | high | ✅ | ✅ | ❌ | 🔵 | 🔵 | >=4.0,<4.7 — 4.7.0 修复路径穿越 |
| 定时任务文件读取 | high | ✅ | ✅ | ❌ | 🔵 | 🔵 | >=4.0,<4.7 — 4.7.0 收紧白名单 |
| 文件下载路径穿越 | high | ✅ | ✅ | ❌ | 🔵 | 🔵 | >=4.0,<4.7 — 4.7.0 修复 |
| 任意文件上传 | high | ✅ | ✅ | ❌ | 🔵 | 🔵 | >=4.0,<4.7 — 4.7.0 收紧扩展名 |
| 定时任务 RCE | high | ✅ | ✅ | ❌ | 🔵 | 🔵 | >=4.0,<4.7 — 4.7.0 白名单修复 |
| Thymeleaf SSTI | high | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | 全版本(依赖 Controller 写法) |
| 代码生成 SSTI | high | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | 全版本(依赖模块启用) |
| 默认口令爆破 | high | ✅ | ✅ | ✅ | ✅ | ✅ | 全版本(依赖用户未改密码) |
| Druid 弱口令 | high | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | 全版本(依赖 Druid 开启) |
| 未授权批量检测 | medium | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | 全版本(依赖配置不当) |
| Nacos 未授权 | medium | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ✅ | 全版本(依赖 Nacos 部署) |
| Cloud Nacos 泄露 | high | ❌ | ❌ | ❌ | ❌ | ✅ | 仅 Cloud 版 |
| Swagger 未授权 | medium | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | 全版本(依赖 Swagger 开启) |
| 目录扫描 | low | ✅ | ✅ | ✅ | ✅ | ✅ | 全版本 |
| 指纹识别 | — | ✅ | ✅ | ✅ | ✅ | ✅ | 全版本 + Cloud |
4. 利用链版本覆盖
| 利用链 | 严重度 | <4.6.0 | 4.6.x | 4.7.x | 5.0.x | Cloud | 前置条件 |
ruoyi_sql_to_rce | high | ✅ | ❌ | ❌ | ❌ | ❌ | SQL 注入提取密码 → 文件上传 → Webshell |
defaultpw_to_webshell | high | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ⚠️ | 默认口令登录 → 文件上传写 Webshell |
nacos_to_dbcreds | high | ⚠️ | ⚠️ | ⚠️ | ⚠️ | ✅ | Nacos 未授权 → 读取数据库配置 |
5. v4.7.x 深度分析(最广泛部署版本)
5.1 当前覆盖
v4.7.x 是若依框架最广泛部署的版本(截至 2026 年 7 月),本工具对其检测能力如下:
| 类别 | 可用模块 | 数量 |
| 确认可检测 | Thymeleaf SSTI、代码生成 SSTI、默认口令、Druid 弱口令、未授权批量、Swagger 未授权、Nacos 未授权 | 7 |
| 确认已修复 | SQL 注入(2)、文件读取(3)、文件上传、定时任务 RCE | 7 |
| 利用链 | defaultpw_to_webshell(需默认口令)、nacos_to_dbcreds(需 Nacos 未授权) | 2 |
5.2 已知 Gap
- 权限绕过类漏洞:若依 v4.7.x 存在若干未授权/越权接口,当前
UnauthBatchPlugin 已有部分覆盖,但缺少颗粒度更高的独立 POC - Shiro 反序列化:若依 v4.7.x 使用 Shiro 做认证框架,已知 Shiro 1.8.0 以下存在 rememberMe 反序列化漏洞 (CVE-2016-4437),当前未覆盖
- Fastjson 反序列化:若依 v4.7.x 依赖 Fastjson,低版本存在反序列化漏洞,当前未覆盖
5.3 建议新增 POC
| 优先级 | 漏洞 | CVE | 适用版本 | 说明 |
| P0 | Shiro rememberMe 反序列化 | CVE-2016-4437 | <4.7.0 (Shiro <1.8.0) | 通过 rememberMe Cookie 反序列化 RCE |
| P1 | 越权数据访问 | N/A | >=4.0 | /system/user/list 等接口越权检测 |
| P1 | 任意密码重置 | N/A | <4.7.2 | 部分版本存在密码重置逻辑缺陷 |
| P2 | Fastjson 反序列化 | CVE-2022-25845 | 依赖 Fastjson <1.2.83 | 通过 JSON 输入触发 |
6. RuoYi-Cloud 微服务版指纹
6.1 指纹特征
| 特征类型 | 特征值 | 置信度 |
| 强特征路径 | /nacos/ (Nacos 控制台) | strong (0.5) |
| 强特征路径 | /gateway/ (Spring Gateway) | strong (0.5) |
| 强关键字 | RuoYi-Cloud、若依微服务 | strong (0.5) |
| 弱关键字 | ruoyi-cloud、RuoYiCloud、nacos | weak (0.2) |
6.2 Cloud 版独有的攻击面
| 攻击面 | 对应模块 | 说明 |
| Nacos 配置中心 | RuoyiCloudNacosPlugin | 可泄露数据库/Redis/JWT 密钥 |
| Spring Gateway | 暂无 | Gateway Actuator 未授权可动态添加路由 RCE |
| Sentinel 控制台 | 暂无 | Sentinel 未授权可能泄露限流规则 |
| 微服务间 RPC | 暂无 | Feign/Dubbo 接口未鉴权 |
6.3 Cloud 版注意事项
- 单机版若依插件也适用于 Cloud 版的
ruoyi-admin 模块(路径前缀不同) - Cloud 版鉴权方式改为 JWT + Gateway 统一鉴权,传统 Cookie 链路不适用
- Cloud 版登录接口可能在 Gateway 层(
/auth/login),而非传统 /login
7. 版本识别机制
7.1 识别流程
目标 URL → 请求 /login 页面 → 正则提取 X.Y.Z 版本号
→ 未匹配则请求根路径 → 正则提取 / ?v=X.Y 参数
→ 未匹配则请求 /actuator/info → 提取 JSON 中的版本
→ 仍未识别 → version=""(全量 POC,保守策略)
7.2 版本正则
VERSION_PATTERN = re.compile(r"\b(4|5)\.(\d+)\.(\d+)\b")
- 匹配版本号:
4.x.y 或 5.x.y - 来源:
/login 页面 HTML 中的 footer 和 JS 变量
7.3 版本过滤逻辑
affected_versions = "" → 全版本适用,不参与过滤 affected_versions = ">=4.0,<4.7" → 仅 4.0 ≤ version < 4.7 适用 - 版本未识别(
version="")→ 保守策略,不做过滤,跑全部 POC
8. 总结
| 版本段 | 覆盖模块数 | 高危模块 | 中危模块 | 利用链 | 评级 |
| <4.6.0 | 16 | 9 | 5 | 3 | 🟢 全面 |
| 4.6.x | 13 | 6 | 5 | 2 | 🟡 较好 |
| 4.7.x | 11 | 4 | 5 | 2 | 🟡 一般 |
| 5.0.x | 9 | 2 | 5 | 1 | 🟠 不足 |
| Cloud | 11 | 5 | 5 | 2 | 🟡 较好 |
结论:v4.6.0 以下版本覆盖最全面;v4.7.x 因多个核心漏洞被修复而覆盖下降,建议优先补充 Shiro 反序列化等 v4.7.x 适用的新 POC。