RuoYi-Vue 任意文件上传漏洞CVE-2026-9374
RuoYi-Vue 是一款基于 Java 的企业级管理框架,该产品采用 Spring Boot + MyBatis + Vue3 技术栈开发,提供开源免费版本和商业版。
一、基本情况
RuoYi-Vue(若依) 是国内最流行、轻量开源的 Java 企业级后台管理框架,采用前后端分离架构,免费版采用 Apache-2.0 协议商用。

RuoYi-Vue 以 RBAC 权限管理为核心,内置完整用户 / 角色 / 菜单 / 数据权限体系,因此适合快速开发 OA、CRM、ERP 等管理系统。
栋科技漏洞库关注到 RuoYi-Vue 在 3.9.2 及之前版本中存在的任意文件上传漏洞,现已被追踪为CVE-2026-9374,CVSS 3.X评分6.3。
二、漏洞分析
CVE-2026-9374是 RuoYi-Vue 受影响版本中存在的任意文件上传漏洞,源于 /common/upload 接口因仅弱校验后缀名且开放匿名访问。
由于 FileUploadUtils.upload 方法调用 isAllowedExtension 对上传文件进行校验时,仅检查文件扩展名字符串是否匹配预定义白名单,
且未验证文件实际 MIME 类型或内容,因此漏洞可导致任意文件上传,可直接上传 webshell 控制服务器,属于中危但极易利用的漏洞。
DEFAULT_ALLOWED_EXTENSION 包含 html、htm 等可被浏览器解析的文件类型,
攻击者可通过上传包含恶意 JavaScript 的 HTML 文件或伪装成图片的恶意文件实现 XSS 攻击、钓鱼页面投放等危害。
1、漏洞成因
接口 /common/upload(CommonController.uploadFile)对外开放且权限控制宽松,常被配置为匿名可访问。
底层工具类 FileUploadUtils.upload 仅做后缀名校验,校验逻辑可被绕过:
仅检查 originalFilename 后缀(如 jpg/png);
未校验文件头(真实文件类型);
未校验 Content-Type;
未做白名单强过滤,也无文件内容检测。
攻击者可通过抓包修改文件名 / 请求体,上传 jsp、jspx、php、html 等恶意文件,直接写入服务器可访问目录。
2、漏洞影响
远程任意文件上传:低权限 / 匿名用户可上传 webshell,控制服务器。
存储型 XSS:上传 html/htm 文件,访问即触发 XSS。
覆盖系统文件:路径穿越(../)可能覆盖配置或程序文件。
泄露敏感信息:结合其他漏洞可进一步提权、拖库。
3、利用要点
访问 /common/upload(默认匿名可传)。
构造 Multipart 请求:
文件名:shell.jsp%00.jpg 或 shell.jspx;
文件内容:冰蝎 / 哥斯拉 webshell;
抓包绕过前端后缀校验。
上传成功后返回 可直接访问的 URL,浏览器访问即可执行脚本。
三、影响范围
RuoYi-Vue ≤ 3.9.2
四、修复建议
RuoYi-Vue ≥ 3.9.3
五、参考链接
管理员已设置登录后刷新可查看