频道栏目
首页 > 资讯 > 安全公告 > 正文

Struts2远程代码执行漏洞(S2-033)技术分析

16-06-03        来源:[db:作者]  
收藏   我要投稿

 Apache Struts2在开启动态方法调用(Dynamic Method Invocation)的情况下,攻击者使用REST插件调用恶意表达式可以远程执行代码。此漏洞编号为CVE-2016-3087,定名为S2-033。本文对该漏洞进行了技术分析并给出了相应的防护方案。

影响范围

影响的版本

Struts 2.3.20 – Struts 2.3.28 (不包括 2.3.20.3和 2.3.24.3)。

不受影响的版本

Struts 2.3.20.3、 2.3.24.3 或者 2.3.28.1。

漏洞分析

经过对Apache Struts2版本进行回溯,发现修复S2-033的代码和S2-032的代码基本相同。

S2-033

]1 S2-033

根据官方描述修复S2-032漏洞是在Struts 2.3.20.2和2.3.24.2版本中修复,而官方的版本库中却少了这个版本,直接出现了可以修复S2-033漏洞的Struts 2.3.20.3、 2.3.24.3和2.3.28.1等版本,通过代码直接对比,只是在DefaultActionMapper.java文件中加入了对method成员变量的值的一次过滤,cleanupActionName这个方法是在对“action:”滥用的问题进行添加的,禁止了绝大多数的特殊字符。但是在后来的版本变更中忽略了之前的问题,将method也引入了OGNL表达式(Object Graph Navigation Library)。

通过对OGNL表达式的过滤来进行漏洞的修补。

如何检查是否受影响

检查Struts2的配置文件struts.xml,确认“struts.enable.DynamicMethodInvocation” 是否为“true”,如为“true”,且版本在受影响版本范围内,则说明受影响,否则不受影响。

防护方案 如果使用受影响的版本,在允许的情况下禁用动态方法调用(Dynamic Method Invocation),修改Struts2的配置文件struts.xml,将struts.enable.DynamicMethodInvocation设置为“false”。 升级到Struts 2.3.20.3、 2.3.24.3 或者 2.3.28.1。
相关TAG标签
上一篇:Win10系统怎么开启来宾账户?Win10开启Guest的办法
下一篇:一个任意文件读取漏洞记录
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站