【T00ls十年庆】Spring视图注入

  • A+
所属分类:安全文章
【T00ls十年庆】Spring视图注入

点击T00ls关注  查看更多

首先恭喜T00LS十周年:)

【T00ls十年庆】Spring视图注入
【T00ls十年庆】Spring视图注入

背景

在一次对某客户的检测过程中,发现了一个由Spring应用开发程序员错误书写代码导致的安全问题。过后对该漏洞进行相应的研究,了解此漏洞背景知识是要先了解基础的MVC开发模式。

【T00ls十年庆】Spring视图注入

具体相关依赖知识在此就不进行赘述。

1. Spring MVC的报错页面

【T00ls十年庆】Spring视图注入

在对客户网站的参数进行常规异常输入时,遇见了一个非常让人困惑的HTTP 500错误页面。 为什么一个参数能导致/Spring提供View的功能错误?

2.Debug回溯

以下为Exception回溯内容:

【T00ls十年庆】Spring视图注入

于是下载了Spring的源代码进行分析,Could not resolve view with name此串字符在Spring中只有3至4次出现的地方,所以较好定位报错地点。

【T00ls十年庆】Spring视图注入

而且报错页面没有被关闭,所以通过上图也能直接找到引发错误的原因为以下代码行。

org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1190)

render()函数源代码:

【T00ls十年庆】Spring视图注入

最终调用到的就是render函数。

先需要了解一下Spring MVC的整个调用流程。

【T00ls十年庆】Spring视图注入

doGet() -> processRequest() -> doService() -> doDispatch() -> processDispatcheRequestResult() -> render()

在render()函数中,最终会追踪到函数createView()。

createView()函数原型:

【T00ls十年庆】Spring视图注入

可以看到Spring对两种前缀(forward:与redirect)进行了特殊处理。


根据视图名到指定的位置获取对应的模板文件

根据视图名跳转


在处理forward:时会再调用一次InternalResourceView,而InternalResourceView是Spring中用来加载Jar包中内部资源用的,所以可以用来做Jar包内的任意文件读取。

不过以上InternalResourceView受配置影响:

例:

【T00ls十年庆】Spring视图注入

如果此时调用InternalResourceView实际上会在前面加上前缀/WEB-INF/,所以在配置suffix的情况下,可能就不能读取任意Jar包内的文件了。

3、危 害


所以如上所述的这些东西到底能造成什么危害呢?

初步想法为:

【T00ls十年庆】Spring视图注入

写了一个本地测试有漏洞的代码Demo验证以上想法。

【T00ls十年庆】Spring视图注入

(1) 权限认证Bypass [成功]

假设采用了装饰器(Decorator)来进行敏感功能的统一权限认证,直接使用view的forward:是能够直接绕过权限认证装饰器,对敏感功能进行直接访问。

【T00ls十年庆】Spring视图注入

(2) 文件读取 [成功]

测试URL:http://127.0.0.1:8080/login?username=admin&password=111&view=forward:/database.properties

【T00ls十年庆】Spring视图注入

(3) HTTP Header Injection [失败]

由于Spring对传入程序的CRLF进行了处理。将其转化为了空格,所以该漏洞没有成功实现。

4、限 制


该漏洞有以下两点限制

  1. 无法读取Jar外的文件

  2. 如果加了suffix可能,无法读取想要的文件

对于第1点限制,有一个未经验证的想法。是否能组合CVE-2018-1271在Windows环境下对目录外的文件进行读取呢?但是由于手头边Windows环境还没有搭建好,可能需要过段时间才能进行测试:p

【T00ls十年庆】Spring视图注入

5、Exploit!


【T00ls十年庆】Spring视图注入

References

https://o2platform.files.wordpress.com/2011/07/ounce_springframework_vulnerabilities.pdf

https://danielmiessler.com/study/mvc/

【T00ls十年庆】Spring视图注入


【T00ls十年庆】Spring视图注入



本文始发于微信公众号(T00ls):【T00ls十年庆】Spring视图注入

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: