ruoyi利用bypatch进行rce

0x01 前因

r0ser1大哥前几天发表了ruoyi的定时任务的最新利用,在此大哥也说了这种利用不太完美,所以我就顺着大哥的思路进行学习。

0x02 ruoyi 绕过定时任务点

因为大哥的文章很完整,我这就随便搞一下

com.ruoyi.quartz.controller.SysJobController#addSave

可以看到定时任务主要先检测黑名单后在检测白名单。通过后在存到数据库

com.ruoyi.common.utils.StringUtils#containsAnyIgnoreCase

图片.png
从这里看到,我们只需要不在黑名单中,然后包含白名单就行。

图片.png

对应的黑白名单

com.ruoyi.quartz.util.JobInvokeUtil#getMethodParams

图片.png

从这里知道我们可以通过定时任务调用string、boolean、long、doule、Integer类型。

0x03 思考

根据上面的分析,要不在黑名单,且要包含白名单,我第一时间想到的就是json和jdbc,这两个可以把白名单搞里头。

com.mchange.v1.db.sql.ConnectionBundlePoolBean#init

图片.png

jdbc我找到了这个,但是这里是int类型,而定时任务调用的是Integer,这里获取不到这个函数。g

json我就找到了fastjson,但是这里环境是1.2.83

com.alibaba.fastjson.JSONObject.parseObject

这里还找了很多,有兴趣的可以试试,给个提示,就是子类也可以去调用abstrct父类的方法。也许从做个点去找。

然后在大哥文章提供函数。

ch.qos.logback.core.rolling.helper.RenameUtil.renameByCopying 复制文件

图片.png

ch.qos.logback.core.FileAppender.openFile 可以创建一个目录或者

图片.png

图片.png

com.sun.glass.utils.NativeLibLoader.loadLibrary(不是所有jdk有) 加载so/dll 。

0x04 枯木逢春

Author:https://flowerwind.github.io/,在大哥博客看到了fasthjson1.2.83下的利用。

图片.png

jdk.nashorn.tools.Shell

图片.png

这里我用构造函数无法使用,所以改成set方法后可以进行出发。

这里我加了一点功能,然后把这个恶意类编译后替换原本的nashorn.jar。这样我们就可以借助上次,然后利用ch.qos.logback.core.rolling.helper.RenameUtil.renameByCopying 写入到jre/ext/lib。

然后利用定时任务调用fj进行触发。 其实这里也不用nashorn吧,自己找下jre/lib、 jre/lib/ext 中jar包,进行替代。

0x05 复现

http://192.168.0.104:8083/monitor/server

图片.png

拿到项目和jre目录、

http://192.168.0.104:8083/common/upload

图片.png
拿到上传目录

http://192.168.0.104:8083/monitor/job/edit

图片.png

调用ch.qos.logback.core.rolling.helper.RenameUtil.renameByCopying 替换nashorn.jar

图片.png

图片.png

这里特地写了一个url类去加载。我们可以上传class的base64,因为这个调用字符在sql数据库,有长度限制。

然后用file或者http去加载

图片.png

对了写lib需要root。

图片.png

要是jre目录下存在classes文件夹,直接写这里最好了

Reference

https://wx.zsxq.com/group/51112822555244/topic/2852241188548821

https://flowerwind.github.io/2025/02/28/%E5%88%86%E4%BA%AB%E4%B8%80%E6%AC%A1%E7%BB%84%E5%90%88%E6%BC%8F%E6%B4%9E%E6%8C%96%E6%8E%98%E6%8B%BF%E4%B8%8B%E7%9B%AE%E6%A0%87


ruoyi利用bypatch进行rce
https://unam4.github.io/2025/12/01/ruoyi利用bypatch进行rce/
作者
unam4
发布于
2025年12月1日
许可协议