神刀安全网

Struts2远程代码执行漏洞(S2-033)技术分析与防护方案

Struts2远程代码执行漏洞(S2-033)技术分析与防护方案

阅读: 2

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的代码基本相同。

Struts2远程代码执行漏洞(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)。

Struts2远程代码执行漏洞(S2-033)技术分析与防护方案

通过对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。
  • 使用绿盟科技防护类产品(WAF/IPS/NF/SG)进行防护。
  • 已经购买了绿盟科技防护类产品服务的客户可以通过产品升级进行防护。
  • 短期服务:绿盟科技工程师现场处理。确保第一时间消除网络内相关风险点,控制事件影响范围,提供事件分析报告。
  • 中期服务:提供 3-6个月的风险监控与巡检服务。根除风险,确保事件不复发。
  • 长期服务:基金行业业务风险解决方案(威胁情报+攻击溯源+专业安全服务)

声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技

绿盟科技(NSFOCUS Co., Ltd.)是中国网络安全领域的领导企业,致力于网络和系统安全问题的研究、高端网络安全产品的研发、销售与网络安全服务,在入侵检测/保护、远程评估、DDoS攻击防护等方面提供具有国际竞争能力的先进产品,是国内最具安全服务经验的专业公司。有关绿盟科技的详情请参见: http://www.nsfocus.com

如果您需要了解更多内容,可以

加入QQ群:486207500

直接询问:010-68438880-8669

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » Struts2远程代码执行漏洞(S2-033)技术分析与防护方案

分享到:更多 ()

评论 抢沙发

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