Struts2爆发高危漏洞,某公司提供检测防御解决方案
8月22日,某公司 wiki更新了一个Struts2的远程代码执行漏洞(S2-057),漏洞威胁等级为高危,漏洞对应的CVE编号为CVE-2018-11776。由于漏洞POC已经暴露,某公司紧急预警,提醒广大Stutst2用户做好安全防护措施。
漏洞名称:Struts2远程代码执行漏洞(S2-057)
漏洞类型:远程代码执行漏洞
漏洞威胁:高危
漏洞利用难度:容易
漏洞分析
Struts2是一个基于MVC设计模式的Web应用框架。在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。
漏洞说明
Struts2 中定义struts-actionchaining.xml配置时如果没有设置namespace的值,并且上层动作配置中并没有设置或使用通配符namespace时,可能会导致远程代码执行漏洞的发生。同样也可能因为url标签没有设置value和action的值,并且上层动作并没有设置或使用通配符namespace,从而导致远程代码执行漏洞的发生。
据统计,在全球范围内对互联网开放Struts2的资产数量多达6,343台,其中归属中国地区的受影响资产数量为1,218台。具体数据如下图:
漏洞复现
触发此漏洞的前提是:
1,使用了Struts 2.3 - Struts 2.3.34,Struts 2.5 - Struts 2.5.16版本的Struts2的框架
struts-actionchaining.xml配置文件中的<package name="actionchaining"extends="struts-default">中没有为namespace赋值,并且配置了重定向 <result type="redirectAction">
此漏洞利用比较简单,只需要在url构造ognl表达式,再加上配置文件中的action标签中的name属性值,并以.action结尾,如下图所示:
访问即可看到构造的ognl表达式已经被执行。
路径跳转到<result type="redirectAction">下配置的action文件路径下,S2-057漏洞被成功的利用。
影响版本
某公司 Struts2 >=2.3,<=2.3.34
某公司 Struts2 >=2.5,<=2.5.16
以及其他一些不受支持的Struts版本也可能受到影响。
解决方案
漏洞检测
某公司安全云已完成该漏洞的检测更新,对所有用户网站探测,保障用户安全。不清楚自身业务是否存在漏洞的用户,可注册信服云眼账号,获取30天免费安全体验。
漏洞修复
目前某公司官方已经在发布的新版本中修复了该漏洞,建议用户及时下载最新版本(2.3.35或2.5.17版本)并更新。
目前官方提供了临时修复方案:当上层动作配置中没有设置或使用通配符namespace时,验证所有XML配置中的namespace,同时在JSP中验证所有url标签的value和action。
漏洞防御
某公司下一代防火墙可轻松防御此漏洞,部署某公司下一代防火墙的用户开启安全防护规则,可轻松抵御此高危风险。其中,AF最新版本8.0.5,针对struts2攻击的原理,从根本上解决了所有已知、未知的struts2攻击,用户无需再担心struts2的安全问题。
某公司云盾已第一时间从云端自动更新防护规则,云盾用户无需操作,即可轻松、快速防御此高危风险。
咨询与服务
某公司安全云平台提供24小时紧急事件联系电话400-630-6430 ,按1选择技术支持服务,输入服务号18174295709按 #号键开始热线服务,转5进入云眼云盾服务。(人工电话服务截止日期2018-8-30)
点击附件查看详情》