RuoYi4.7.0漏洞复现与通读审计——(定时任务)任意文件下载[二]

2025-02-18 10 0

前提提要

两个月前审计过RuoYi4.7.0漏洞的成因,从漏洞提交直接分析,但这样的分析让我感到远远不够,我还是不特别明白这个漏洞完整的造成原因。所以我打算进一步的去审计相关代码,但没想到因为中间参加了工作、面试、审计的难度,种种原因,让这篇文章这么久才发布~(真不是因为我懒啊啊啊啊),如果没有看过第一篇的朋友,可以前往链接RuoYi4.7.0漏洞复现与通读审计——(定时任务)任意文件下载

正式开始

首先前面的两个坑点交代一下:

1.profile赋值是怎么做到的,其实就是如何让调用字符串中的函数进行执行的

2.C://Users//luche//Desktop//1.txt1.txt为什么最后变成了C://Users//luche//Desktop//1.txt

文章开始前可以公布一下答案:第一个问题解决了,第二个问题还没找出原因~

好了,让我们开始吧,走入代码的海洋!!!

首先抓取调用定时函数的包

当我们点击确定后,通过抓包软件,知道了他是调用该接口的包,调用了这三个接口。

也可以通过IDEA软件内,看到调用了哪个接口,然后直接复制进行全局搜索。

知道了以后我们就通过追踪该路径,D:\RuoYi-v4.7.0\ruoyi-quartz\src\main\java\com\ruoyi\quartz\controller\SysJobController.java

最后追踪位置就是SysJobController.java文件,证据如下:

在该文件中找到关于定时任务的那一部分:

我们首先要找到,定时任务的传参,因为要知道是从哪里接收的一个具体参数嘛。

很多小白师傅可能没见过editSave(@Validated SysJob job) 这样的写法,我也没见过,那么经过我的查询以后

其实很好理解,意思就是声明了一个SysJob job的一个变量。

要是还不能理解,大家是否理解Sysjob job = new SysJob(),这段语句的意义是声明并初始化变量job

这里Sysjob类是自定义的。

而@Validated 是 Spring Framework 提供的注解,用来传入的对象合法性

现在我们就要解决两个问题:

1.那么这里配合使用的注解在哪呢?进行了怎样的清洗?

2.查看这个job参数是怎么来的?

首先我们查到了,本段代码中有引用com.ruoyi.quartz.domain.SysJob;

那么我们就进一步跳转到SysJob类型声明的地方

可以看到,这里写了Sysjob具体的定义,以及配合@Validated使用的注释@Size、@NotBlank。

值得注意的是@Excel并不是。

@NotBlank注释的作用是保证传入的字符不为空。

@Size注释的作用则是限制输入的长度。

那么我们一一整理:

总结一下就是:

1.参数jobName invokeTarget cronExpression这三个参数不能为空,这三个参数分别对应任务名称、调用目标字符串、Cron执行表达式不能为空

2.其中任务名称不能超过64个字符,调用目标字符串不能超过1000个字符,Cron执行表达式不能超过255个字符

为了直观的展示,我们退出SysJob.java文件,回到SysJobController.java直接开启调试。

在新增的时候:

job接收到的参数有:

可以发现这些值和上面刚刚说的完全是一致的,代表我们的文件没有找错~

misfirePolicy、concurrent、status三个值中的10的意思是:

该代码段位于:D:\RuoYi-v4.7.0\ruoyi-quartz\src\main\java\com\ruoyi\quartz\domain\SysJob.java-- 上面有提过,引用了该代码

总结一下,job收到了哪些参数:

invokeTarget:调用目标字符串

cronExpression:cron表达式

misfirePolicy:执行策略(0默认、1立即触发执行、2触发一次执行、3不触发立即执行)

concurrent:并发执行(1允许、2禁止)

status:状态(1启动、2暂停)

remark:备注

我们其实重点要关注的只有一个字段:invokeTarget,调用目标字符串的字段

关于参数是怎么传到job中的,这不是我们本次研究需要关注的重点,所以可以


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

从中国视角看 NSA(方程式组织)的 TTP(攻击套路)
利用 cve-2023-33476 进行远程代码执行
黑客通过漏洞组合攻击获得Palo Alto防火墙的root权限
Twitter最新接口浅析(非爬虫)
DeepSeek本地化部署有风险!快来看看你中招了吗?
java代码审计 | spring mvc路由详解

发布评论