Struts 2.0.0 – Struts Struts 2.3.24.1 漏洞解决办法

落花浮王杯 提交于 2019-12-02 21:02:04

背景介绍:   

Struts2 是全球使用最广泛的 Java web 服务端框架之一。Struts2 是 Struts 的下一代产品,是在 Struts1 和 WebWork 的技术基础上进行了合并的全新的 Struts2 框架。

在此之前 S2-005,S2-009,S2-013,S2-016,S2-20 都存在远程命令执行漏洞,使得大量的网站系统遭受入侵。因此,该漏洞一经曝光就在安全圈内引起轩然大波。

漏洞成因:    

Struts2的标签库使用OGNL[Object-Graph Navigation Language,一种功能强大的表达式语言]表达式来访问ActionContext中的对象数据。为了能够访问到ActionContext中的变量,Struts2将ActionContext设置为OGNL的上下文,并将OGNL的跟对象加入ActionContext中。

在Struts2中,如下的标签就调用了OGNL进行取值。

<p>parameters: <s:property value="#parameters.msg" /></p>  

Struts2会解析value中的值,并当作OGNL表达式进行执行,获取到parameters对象的msg属性。S2-029仍然是依靠OGNL进行远程代码执行。

如果使用Struts2的web应用将用户提交的数据未经过滤,直接通过Struts2的标签设置成属性值,就会被Struts2执行

受影响的Struts 2版本:

Struts 2.0.0 – Struts Struts 2.3.24.1

修复建议:

1:当重分配传入Struts标签属性的参数时,总是进行验证

2:建议用户将Struts升级至 2.3.26版本。

--- 引自http://sanwen8.cn/p/1f7AJID.html

解决办法:升级到2.3.29,更新xwork-core-2.3.29.jar;struts2-core-2.3.29.jar;struts2-json-plugin-2.3.29.jar;ognl-3.0.17.jar;freemarker-2.3.22.jar

测试工具及struts升级包地址:http://pan.baidu.com/s/1slah6XZ

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!