freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

若依CMS 4.7.x版本代码审计与分析
2023-07-24 14:23:09
所属地 河北省

1.安装过程

在\src\main\resources\application-druid.yml配置数据库等信息。

1690177553_64be10114a77d8dffb8fc.png!small?1690177634524

代码审计与分析

主要针对的版本为4.7.6与4.7.7

4.7.6 定时任务导致的任意文件下载

此任意文件下载,需要配合定时任务来实现

在com.ruoyi.web.controller.common.resourceDownload存在任意文件下载

首先简单分析下其代码:

请求url如:http://127.0.0.1:8080/common/download/resource?resource=1.htm

跟进checkAllowDownload校验的方法,发现是白名单校验,这里htm也在名单中,所以通过

可以发现在RuoYiConfig.getProfile();获取到的路径为D:/ruoyi/uploadPath

此路径从配置文件中获取

而后面代码就是下载,在最后的writeBytes后,就是将D:/ruoyi/uploadPath写入到response中。

// 数据库资源地址  downloadPath为D:/ruoyi/uploadPath
String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
// 下载名称 downloadName为uploadPath
String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, downloadName);
FileUtils.writeBytes(downloadPath, response.getOutputStream());

但是若依有一处定时任务,该定时任务可以直接调用Bean其对应方法

而在com.ruoyi.common.config包中有一个RuoYiConfig配置类。可以看到该类是与application.yml有关联。因为在application.yml中发现了profile设置了文件下载的路径,于是乎就可以通过定时任务的set方法来对其进行更改

# web安全 # 漏洞分析 # 代码审计 # Java代码审计
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录