在2016年3月份的时间Apache Struts2 发布的最新安全公告S2-029中显示,Struts2 存在远程代码执行漏洞。Struts 2.0.0 – Struts2.3.24.1 版本均受到该漏洞影响。这个漏洞危险级别被定义为高危,漏洞 CVE 编号:CVE-2016-0785。目前Apache提供了Apache Struts2 S2-029 远程代码执行漏洞的本地检测方案。
Apache Struts2背景介绍
Struts2 是全球使用最广泛的 Javaweb 服务器框架之一。Struts2 是 Struts 的下一代产品,是在 struts1和 WebWork 的技术基础上进行了合并的全新的 Struts2 框架。
之前 S2-005,S2-009,S2-013,S2-016,S2-20 都存在远程命令执行漏洞,使得大量的网站系统遭受入侵。所以漏洞一经曝光就在安全圈内引起轩然大波。
而现在Apache Struts2 又出现漏洞了,今天晚上(4月26日)Apache官方发布安全公告(官方编号S2-032/CVE编号CVE-2016-3081),Apache Struts2服务在开启动态方法调用(DMI)的情况下,可以被远程执行任意命令,安全威胁程度高。
Apache Struts2 S2-032漏洞影响的软件版本为2.3.20-2.3.28,但是2.3.20.2、2.3.24.2两个版本除外,建议尽快升级到相应的最新版本,并关闭DMI。
这个S2-032漏洞这是自2012年Struts2命令执行漏洞大规模爆发之后,Apache Struts2服务时隔4年再次爆发大规模漏洞。
截止目前为止,乌云漏洞报告平台已收到100多家网站的相关漏洞报告,其中银行网站占了很大比例。
现在已有多个版本的漏洞利用POC在互联网流传,分为命令执行版本与直接写入Web后门的版本。
乌云平台现在已经被S2-032漏洞刷屏,据说乌云后台还有100多个漏洞待审核,因此预计4月26日晚上会迎来该漏洞爆发的第一个小高峰,尤其是银行业恐怕会遭到严重的影响。
结合Apache Struts2历史情况分析,S2-032漏洞除了会影响银行与互联网企业(网易/新浪等)以外,还可能影响政府、证券、保险等行业网站,相关服务一定要提前做好安全应急与防范措施!
如果你在影响范围内,有两种解决方法:
一、禁用Apache Struts2 动态方法调用
修改Struts2的配置文件,将“struts.enable.DynamicMethodInvocation”的值设置为false,比如:
<constant name=”struts.enable.DynamicMethodInvocation” value=”false” />;
二、升级Apache Struts2 软件版本
如果条件允许,可升级Struts版本至2.3.20.2、2.3.24.2或者2.3.28.1,这几个版本都不存在此漏洞。
升级地址:https://struts.apache.org/download.cgi#struts23281
另外附上漏洞测试样例(无风险):
http://d047ab33ccbe2dda8.jie.sangebaimao.com/struts2-showcase/filedownload/index.action?method:%2523_memberAccess%[email protected]@DEFAULT_MEMBER_ACCESS%252C%2523test%253D%2523context.get%2528%2523parameters.res%255B0%255D%2529.getWriter%2528%2529%252C%2523test.println%2528%2523parameters.command%255B0%255D%2529%252C%2523test.flush%2528%2529%252C%2523test.close%26res%3Dcom.opensymphony.xwork2.dispatcher.HttpServletResponse%26command%3D%2523%2523%2523Struts2%20S2-032%20Vulnerable%2523%2523%2523
Apache官方难辞其咎
回顾struts2的漏洞历史,我们发现Apache官方难辞其咎。
首先,开发人员安全意识不强,虽然采取了基本的安全措施,但是形同虚设;其次,官方修复力度不够,给人的感觉总像是在敷衍了事,未能从根本上解决问题;再就是,官方的开放精神确实很震撼,竟然直接将漏洞的PoC挂在官网上,这样给了很多人进一步研究漏洞利用的机会,这个也是导致问题更加严重的一个原因。
近两年关于struts2的攻击事件频发,影响包括向移动、电信、联通、各大网银、证券等等各大门户网站,。因为struts2是一款功能非常强大的j2ee框架,特别是对于广大开发人员,应用非常广泛。所以一旦struts2出现0day,导致互联网上出现大面积被入侵、被拖库,信息泄露等事件。对于此问题,建议相关技术人员应及时更新struts2框架版本。有实力的公司最好自己开发应用框架,避免使用开源框架。
struts2漏洞盘点
影响比较大,利用比较广泛的struts2漏洞:
2010年 S2-005
CVE-2010-1870 XWork ParameterInterceptors bypass allows OGNL statement execution
2012年1月 S2-008
CVE-2012-0392 struts2 DevMod Remote Command Execution Vulnerability
2012年1月 S2-009
CVE-2011-3923 Struts<=2.3.1参数拦截器代码执行
2013年 5月 S2-013
CVE-2013-1966 Struts2 <= 2.3.14 includeParams属性远程命令执行漏洞
2013年7月 S2-016
CVE-2013-2251 Struts2 <= 2.3.15.1 action、redirect、redirectAction前缀远程命令执行漏洞
2014年3月 S2-020
Struts2 <= 2.3.16 DoS attacks and ClassLoader manipulation
2014年4月 S2-021
Struts2 <= 2.3.16.1 bypass patch(ClassLoader manipulation)
具体参照struts2官网提供的漏洞历史:
https://cwiki.Apache.org/confluence/display/WW/Security+Bulletins
漏洞概要
缺陷编号: WooYun-2016-200877
漏洞标题: 网易多站存在S2-023命令执行(子域存在通用性)
相关厂商: 网易
漏洞作者: 路人甲
提交时间: 2016-04-26 17:38
公开时间: 2016-06-10 17:38
漏洞类型: 命令执行
危害等级: 高
漏洞状态: 等待厂商处理
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
漏洞详情
披露状态:
2016-04-26: 细节已通知厂商并且等待厂商处理中
简要描述:
struts
漏洞hash:dfc32ca119eea2d0122772057919776f
版权声明:转载请注明来源 路人甲@乌云
发表回复