若依CMS 4.7.x版本代码审计与分析 | xxx若依CMS 4.7.x版本代码审计与分析 – xxx
菜单

若依CMS 4.7.x版本代码审计与分析

七月 28, 2023 - FreeBuf

1.安装过程

在srcmainresourcesapplication-druid.yml配置数据库等信息。

若依CMS 4.7.x版本代码审计与分析

代码审计与分析

主要针对的版本为4.7.6与4.7.7

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

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

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

若依CMS 4.7.x版本代码审计与分析

首先简单分析下其代码:

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

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

若依CMS 4.7.x版本代码审计与分析

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

若依CMS 4.7.x版本代码审计与分析

此路径从配置文件中获取

若依CMS 4.7.x版本代码审计与分析

而后面代码就是下载,在最后的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其对应方法

若依CMS 4.7.x版本代码审计与分析

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

若依CMS 4.7.x版本代码审计与分析

本文作者:, 转载请注明来自FreeBuf.COM

# web安全 # 漏洞分析 # 代码审计 # Java代码审计

Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51