发布于2025年12月5日12月5日 0x00 前言 当你使用Zoey 时,黑客已经在使用Shiro 的默认密钥来轰炸你的Shell;当你还在为分页查询苦苦挣扎时,攻击者已经通过SQL注入接管了数据库;而你认为安全的计划任务只是他们操纵服务器的玩具。本手册将带你以敏锐的视角剖析Zoey 的每一个致命弱点。 —— 因为真正的安全始于知道如何摧毁它。 简介 若易是一个基于Spring Boot和Vue.js的快速开发平台。它提供了很多常见后端管理系统所需的功能和组件,包括权限管理、定时任务、代码生成、日志管理等。若易的目标是帮助开发者快速构建后端管理系统,提高开发效率。 若一的版本有很多,其中最常用的有若一单一应用版(RuoYi)、若一前后端分离版(RuoYi-Vue)、若一微服务版(RuoYi-Cloud)、若一移动版(RuoYi-App)。 若依服务 阿里巴巴 阿里巴巴 春天 雷迪斯 mysql 米尼奥 快速JSON 四郎 swagger-ui.html 米巴蒂斯 搜索语法 福法: (icon_hash='-1231872293'|| icon_hash='706913071') 猎人: web.body='若易后台管理系统' 环境设置 新建文件夹,拉出若依源码 git克隆https://gitee.com/y_project/RuoYi cd若仪 切换版本 git标签-l 开关 git checkout v4.5.1 接下来,我使用idea构建了它。 用phpstudy可以正常搭建Mysql 需要修改日志存储路径 配置mysql 启动即可,默认端口是80 0x01 弱密码 用户:admin ruoyi druid 密码:123456 管理员德鲁伊admin123 admin888 0x02 Shiro默认键 漏洞介绍 如果默认使用shiro组件,可以尝试shiro经典的rememberMe漏洞getshell。 受影响的版本 若一V-4.6.2 漏洞重现 在配置文件中,可以看到Shiro的key在配置文件中。 漏洞利用工具地址 https://github.com/SummerSec/ShiroAttack2 RuoYi-4.2版本使用shiro-1.4.2。此版本及后续版本需要勾选AES GCM模式。 RuoYi 版本号对象版本4.6.1-4.3.1zSyK5Kp6PZAAjlT+eeNMlg==3.4- 及以下版本的默认AES 密钥fCq+/xW488hMTCD+cmJ3aQ==Ruo Yi-4.6.2 自版本4.6 以来一直使用随机密钥而不是固定密钥。如果想使用固定key,则需要自己指定key。因此,4.6.2版本之后,没有获取密钥就无法再使用。0x03 SQL注入 注入点1 /role/list接口(V-4.6.2) 与上述4.5.1 版本相同 一、分析源码 Mybatis配置一般使用#{},类似于PreparedStatement的占位符效果,可以防止SQL注入。若一使用${}引发SQL注入。 跳跃 解释一下${params.dataScope} ${params.dataScope} 这段代码是MyBatis的动态SQL之一,主要用于在SQL查询中嵌入外部定义的字符串或参数。这里的${.}语法的意思是取出params对象中名为dataScope的属性值,直接嵌入到SQL语句中。 例如,在基于角色权限管理的系统中,不同的用户可能具有查看不同数据记录的权限。管理员可以查看所有部门的记录,而普通用户只能查看自己部门的记录。此时,dataScope的值可以是根据用户角色动态生成的SQL片段,如“AND dept_id IN (SELECT dept_id FROM user_dept_access WHERE user_id=#{userId})”,以限制查询结果仅包含特定部门的用户信息。 可以看到,查询时,user的属性参数为map。在xml中,dataScope拼接在sql语句之后。 进入映射器层 跳转到上一级 输入角色查看信息 查看功能 参数 根据路径 执行代码 params[dataScope]=和extractvalue(1,concat(0x7e,(选择user()),0x7e)) 注入点2/角色/导出(V-4.6.2) 注入点3 /user/list (V-4.6.2) 注入点4 /user/list (V-4.6.2) 注入点5 /dept/list (V-4.6.2) 注入点6 /role/authUser/alulatedList (V-4.6.2) 注入点7 /role/authUser/unallocatedList 注入点 8 /dept/edit (V-4.6.2) 部门名称=xxxxx
创建帐户或登录后发表意见