若依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