您现在的位置是:首页 > 文章详情

RuoYi 4.3.1 发布,请及时更换默认秘钥

日期:2020-07-05点击:1275

若依管理系统 v4.3.1 已发布,更新日志:

  1. 国家信息安全漏洞(防止命令执行漏洞,请务必保持cipherKey密钥唯一性)
  2. 升级shiro到最新版1.5.3 阻止权限绕过漏洞
  3. 修改验证码在使用后清除,防止多次使用
  4. 检查字符支持小数点&降级改成异常提醒
  5. openOptions函数中加入自定义maxmin属性
  6. 支持openOptions方法最大化
  7. 支持openOptions方法多个按钮回调
  8. 新增isLinkage支持页签与菜单联动
  9. 修改代码生成导入表结构出现异常页面不提醒问题
  10. 优化用户头像发生错误,则显示一个默认头像
  11. Excel导出支持字典类型
  • 命令执行漏洞 RuoYi <= v4.3.0

若依管理系统使用了Apache Shiro,Shiro 提供了记住我(RememberMe)的功能,下次访问时无需再登录即可访问。系统将密钥硬编码在代码里,且在官方文档中并没有强调修改该密钥,导致框架使用者大多数都使用了默认密钥。攻击者可以构造一个恶意的对象,并且对其序列化、AES加密、base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞,进而在目标机器上执行任意命令。

检测漏洞:ShiroConfig.java 是否包含 fCq+/xW488hMTCD+cmJ3aQ==,如果是使用的默认密钥则需要修改,防止被执行命令攻击。

解决方案:升级版本到 >=v.4.3.1,并且重新生成一个新的秘钥替换cipherKey,保证唯一且不要泄漏。

 # Shiro shiro: cookie: # 设置密钥,务必保持唯一性(生成方式,直接拷贝到main运行即可)KeyGenerator keygen = KeyGenerator.getInstance("AES"); SecretKey deskey = keygen.generateKey(); System.out.println(Base64.encodeToString(deskey.getEncoded())); cipherKey: zSyK5Kp6PZAAjlT+eeNMlg== 
 // 直接拷贝到main运行即可生成一个Base64唯一字符串 KeyGenerator keygen = KeyGenerator.getInstance("AES"); SecretKey deskey = keygen.generateKey(); System.out.println(Base64.encodeToString(deskey.getEncoded())); 
  • SQL注入攻击 RuoYi <= v3.2.0

若依管理系统使用了PageHelper,PageHelper提供了排序(Order by)的功能,前端直接传参完成排序。系统没有做字符检查,导致存在被注入的风险,最终造成数据库中存储的隐私信息全部泄漏。

检测漏洞:BaseController.java 是否包含 String orderBy = pageDomain.getOrderBy();,如果没有字符检查需要修改,防止被执行注入攻击。

解决方案:升级版本到 >=v.3.2.0,或者重新添加字符检查String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());,防止注入绕过。

 package com.ruoyi.common.utils.sql; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.StringUtils; /** * sql操作工具类 * * @author ruoyi */ public class SqlUtil { /** * 仅支持字母、数字、下划线、空格、逗号、小数点(支持多个字段排序) */ public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,\\.]+"; /** * 检查字符,防止注入绕过 */ public static String escapeOrderBySql(String value) { if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) { throw new BaseException("参数不符合规范,不能进行查询"); } return value; } /** * 验证 order by 语法是否符合规范 */ public static boolean isValidOrderBySql(String value) { return value.matches(SQL_PATTERN); } } 
  • Shiro阻止权限绕过漏洞 RuoYi <= v4.3.0

Shiro < 1.5.2 版本存在一处权限绕过漏洞,当受影响版本的Shiro框架结合Spring dynamic controllers使用时,未经授权的远程攻击者可以通过精心构造的请求包进行权限绕过,可能造成鉴权系统失效以及后台功能暴露。

检测漏洞:pom.xml Shiro <=1.5.2 则版本存在漏洞。

解决方案:升级版本到 >=1.5.3

  • Fastjson高危漏洞 RuoYi <= v4.2.0

Fastjson < 1.2.68 版本存在一处反序列化漏洞,主要为autoType开关绕过的反序列化漏洞利用,恶意攻击者可以通过该漏洞绕过autoType限制实现远程代码执行攻击,从而获取目标系统管理权限,建议尽快更新漏洞修复版本或采用临时缓解措施加固系统。

检测漏洞:pom.xml Fastjson <=1.2.68 则版本存在漏洞。

解决方案:升级版本到 >=1.2.70

注意

若依平台的默认口令 admin/admin123,请大家在线上环境一定要修改超级管理员的密码。
SysPasswordService.encryptPassword(String username, String password, String salt)
直接到main运行此方法,填充账号密码及盐(保证唯一),生成md5加密字符串。

内置功能

1.  用户管理:用户是系统操作者,该功能主要完成系统用户配置。
2.  部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持权限。
3.  岗位管理:配置系统用户所属担任职务。
4.  菜单管理:配置系统菜单,操作权限,按钮权限标识等。
5.  角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
6.  字典管理:对系统中经常使用的一些较为固定的数据进行维护。
7.  参数管理:对系统动态配置常用参数。
8.  通知公告:系统通知公告信息发布维护。
9.  操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
10.  登录日志:系统登录日志记录查询包含登录异常。
11. 在线用户:当前系统中活跃用户状态监控。
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
14. 系统接口:根据业务代码自动生成相关的api接口文档。
15. 服务监控:监视当前系统 CPU、内存、磁盘、堆栈等相关信息。
16. 在线构建器:拖动表单元素生成相应的HTML代码。
17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

系统演示  http://www.ruoyi.vip

原文链接:https://www.oschina.net/news/116938/ruoyi-4-3-1-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章