【漏洞预警】Apache+Struts2(S2-052)远程代码执行漏洞

发布时间: 2017-09-08

浏览次数: 65


综述:

2017年9月5日,Apache软件基金会(Apache Software Foundation)发布最新的安全公告,Apache Struts 2.3.x 和2.5.x的 REST 插件存在远程代码执行的高危漏洞,漏洞编号为 CVE-2017-9805(S2-052)。漏洞的成因是由于使用 XStreamHandler 反序列化 XStream 实例的时候没有任何类型过滤导致远程代码执行。

相关链接如下:

https://cwiki.apache.org/confluence/display/WW/S2-052


受影响版本:

Struts 2.1.2 – Sturts 2.3.33

Struts 2.5 – Struts 2.5.12


不受影响版本:

Struts 2.3.34

Struts 2.5.13


CVE编号:

CVE-2017-9805


问题描述:

REST插件正在使用 XStreamHandler XStream的实例进行反序列化,而不进行任何类型过滤,这可能导致在反序列化XML有效内容时执行远程执行代码。


对工控企业的影响:

Apache Struts是一个开源的网页应用程式框架,主要用来开发Java EE网络应用程序,受到众多企业的青睐。此漏洞影响了2008年以来的所有Struts版本,各种采用该框架REST插件的网络应用程序都受到波及。


对于工控企业来说,位于上层的信息管理系统,例如:ERP、OA、生产运行管理等系统可能使用J2EE Struts2框架开发,这些系统往往会直接暴露和发布在公网环境中,攻击者可以通过该漏洞远程执行代码,并获得主机权限,这样将导致攻击者可以利用上层信息系统,通过跳板渗透等手段,进一步对生产网络产生影响,能对业务产生严重影响。


因此,使用Struts2框架和将应用系统发布于外网的工控企业应该引起高度注意,同时应该及时展开整改自查和升级工作。


官方修复方法:

升级到Apache Struts版本2.5.13或2.3.34。


临时解决方案:

最好的选择是在不使用时删除Struts REST插件。或者,只能通过删除所有必需的JAR(插件加所有依赖项)来升级插件。另外一个选择是将插件限制到服务器普通页面和JSONs:


1. 禁止处理XML页面和对这些页面的请求

<constant name="struts.action.extension" value="xhtml,,json" />

2. 覆盖getContentType 在 XStreamHandler

public class MyXStreamHandler extends XStreamHandler { public String

getContentType() {

 return "not-existing-content-type-@;/&%$#@";

 }

}

3. 通过覆盖框架中提供的处理程序来注册处理程序 struts.xml

<bean type="org.apache.struts2.rest.handler.ContentTypeHandler" 

name="myXStreamHandmer" class="com.company.MyXStreamHandler"/>

<constant name="struts.rest.handlerOverride.xml" value="myXStreamHandler"/>

在采取解决措施时,一定要先进行验证,确保相关操作不会对生产业务造成影响的前提下再进行操作。

关于九略智能 




杭州九略智能科技有限公司是专注于工业网络和工业控制系统安全的高科技创新型企业,聚焦于工业网络和工业控制系统的安全技术研究、安全产品研发、安全解决方案等领域,得到了行业客户和政府部门的高度认可。公司总部位于北京,分别在上海、杭州、深圳、武汉设立有分支机构。

【官方网站:www.jiuluetec.com】

【官方微博:http://weibo.com/jiuluetec】