若依4.5.0-4.5.1任意文件下载漏洞


根据官方给出的信息,漏洞的位置为ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java

fileDownload方法

 

 

 

该方法使用了FileUtilsisValidFilename方法对fileName变量进行处理。跟进

 

 

 

isValidFilename方法获取filename变量,再使用FILENAME_PATTERN进行处理。

 

 

 

可以看到对filename变量进行了正则处理,但是未对路径穿越做限制。漏洞存在

那么是怎么修复的呢?接着看4.5.1版本

 

把函数由isValidFilename替换成了checkAllowDownload,跟进。

 

 

 

 

 

if判断对路径穿越进行了处理。

对文件规则进行检查。首先看一下contains的作用

contains():检查该数据在该数组中是否存在,返回一个boolean值。

接着使用DEFAULT_ALLOWED_EXTENSION进行文件后缀的检查

 

 

 

最后调用了getFileType对文件名进行检查

lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。

toLowerCase() 方法将字符串转换为小写。

 

 

 

 

4.5.1新增了几个方法:

FileUtils.checkAllowDownload方法、checkAllowDownload方法

FileTypeUtils类:getFileType(Filefile)getFileType(StringfileName)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM