前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >重磅 | Struts2 S2-048远程代码执行漏洞分析报告

重磅 | Struts2 S2-048远程代码执行漏洞分析报告

作者头像
安恒信息
发布2018-04-11 10:03:09
1.1K0
发布2018-04-11 10:03:09
举报
文章被收录于专栏:安恒信息安恒信息

Struts2 S2-048

远程代码执行漏洞分析报告

安全通告

尊敬的客户:

2017年7月7日,Struts2官方公布最新的Struts2远程代码执行漏洞S2-048,在一定条件下,该漏洞允许攻击者远程执行代码。安恒信息应急响应中心启动“黄色”预警预案。

目前,安恒信息的WAF、玄武盾都已升级检测规则,可以有效防护该漏洞。网站安全监测平台、Web应用弱点扫描器、远程安全评估系统和等级保护安全检查工具箱也已升级,可以检测该漏洞,建议上述产品用户尽快将规则库升级到最新版本。

安恒信息已经开发出漏洞检查工具,下载链接:

http://pan.baidu.com/s/1jIdx62U

安恒信息应急响应中心将对该漏洞进行持续关注,并第一时间为您更新相关漏洞信息。

安恒信息应急响应中心

2017年7月7日

漏洞信息

1. 漏洞描述

Struts2 是 Apache 软件基金会负责维护的一个基于MVC设计模式的 Web 应用框架开源项目。

当开发人员在Struts2开发框架中使用插件 “Struts1”,且该插件允许应用使用Struts 1的Actions 和 ActionForms ,此时如果将请求参数值作为构建 ActionMessage 对象的内容,直接返回给用户,则可能产生远程代码执行漏洞。

2. 漏洞危害

3. 影响版本

Strut2.3.x

4. 漏洞利用前置条件

必须使用Struts-core-1.x.x.jar插件,且ActionMessage类的key属性可控。

5. 风险等级

安恒信息应急响应中心将此漏洞安全风险定级为: 高危

6. 漏洞分析

Struts2.3.x中showcase.war中存在一个名为“SaveGangsterAction.java”类,这个类实现了Struts2中的Struts1.x-core.jar插件中的Action,如下图:

直接将HTTP POST中的name参数值作为key传给ActionMessage类,其中ActionMessage中的key就可以被控制。

接下来会调用org.apache.struts2.s1.Struts1Action的public String execute() throws Exception,方法如下图:

调用com.opensymphony.xwork2.ActionSupport的getText(String aTextName)的方法来获取对象的错误消息。

再调用com.opensymphony.xwork2.util.LocalizedTextUtil中以下方法private static GetDefaultMessageReturnArg getDefaultMessage(String key, Locale locale, ValueStack valueStack, Object[] args, String defaultMessage)方法来调用ognl获取对应的错误消息。

具体的函数调用栈如下:

7. 漏洞自查

用户可通过以下方法进行漏洞自查:

在请求参数中加入如下代码

${#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('test','test')}

如在Response Header中出现test:test字段,则表示存在漏洞。

修复建议

1. 官方补丁

目前 Apache 官方暂未发布官方补丁。

2. 临时缓解措施

方法一

停用 showcase.war

方法二

开发者通过使用 resource keys 替代将原始消息直接传递给 ActionMessage 的方式。 如下所示:

messages.add("msg", new ActionMessage("struts1.gangsterAdded", gform.getName()));

请不要使用如下的方式

messages.add("msg", new ActionMessage("Gangster " + gform.getName() + " was added"));

方法三

安恒信息玄武盾产品可对该漏洞防护,如有需求可与我们联系并快速接入。

- END -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安恒信息 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档