<menuitem id="dp1tl"><video id="dp1tl"><thead id="dp1tl"></thead></video></menuitem>
<progress id="dp1tl"></progress>
<ruby id="dp1tl"><video id="dp1tl"><progress id="dp1tl"></progress></video></ruby>
<cite id="dp1tl"><video id="dp1tl"><th id="dp1tl"></th></video></cite>
<progress id="dp1tl"><var id="dp1tl"><strike id="dp1tl"></strike></var></progress>
<menuitem id="dp1tl"><del id="dp1tl"></del></menuitem>
Struts(S2-048)远程命令执行漏洞分析
时间:2017-07-08来源:点击:7539分享:
Apache的Struts2是一个优雅的,可扩展的开源MVC框架,主要用于创建企业级的Java Web应用程序。在Struts 2.3.X系列的Showcase插件中演示Struts2整合Struts 1的插件中存在一处任意代码执行漏洞。当你的Web应用使用了Struts 2 Struts 1插件, 则可能导致Struts2执行由外部输入的恶意攻击代码。

一、漏洞分析

1.1漏洞背景

Apache的Struts2是一个优雅的,可扩展的开源MVC框架,主要用于创建企业级的Java Web应用程序。在Struts 2.3.X系列的Showcase插件中演示Struts2整合Struts 1的插件中存在一处任意代码执行漏洞。当你的Web应用使用了Struts 2 Struts 1插件, 则可能导致Struts2执行由外部输入的恶意攻击代码。

 

1.2漏洞影响

Apache Struts 2.3.x系列中启用了struts2-struts1-plugin插件的版本。

 

 二、漏洞复现

这里我们测试的是2.3.24版本中的showcase演示演示示例。

下载struts-2.3.24-apps.zip,解压当中的showcase 的war包到tomcat下

1.png

漏洞示例触发位置在SaveGangsterAction.java中

2.png

?#19994;絠tegration中的struts1 intergeration

3.png


打开后演示如下:

4.png

随便填完submit然后抓包

5.png

修改 content-type,poc还是利用的OGNL,跟之前的s2-045和s2-046差不多

6.png

可以看到成功执行了whoami命令获得了system权限。


三、漏洞分析 

3.1漏洞条件

漏洞是在struts2中开启了struts1的插件,org.apache.struts2.s1.Struts1Action类是把封装了struts1的Action ?#21592;?#20860;容在struts2中。

 

3.2漏洞触发点

漏洞出在org.apache.struts2.s1.Struts1Action类的execute方法中,

7.png

首?#26085;?#37324;ActionForward forward = action.execute(mapping, actionForm, request, response);会把表单的请求处理回显给客户端。


然后addActionMessage(getText(msg.getKey(), Arrays.asList(msg.getValues())));这里?#20540;?#29992;了getText方法会把action messages传递给com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage 。


最后在其中?#20540;?#29992;了com.opensymphony.xwork2.util.TextParseUtil.translateVariables,它用来调用OGNL 表达式用处理字符串表达式。漏洞利用OGNL表达式执行任意命令。

 

 四、修复建议

4.0影响版本

Apache Struts 2.3.x系列中启用了struts2-struts1-plugin插件的版本


4.1漏洞检测 (检测是否存在漏洞的方法)

检查Struts2框架的版本号


4.2补丁地址

暂无补丁,请升级到最新版Struts2


4.3手工修复

4.3.1不启用struts2-struts1-plugin插件

4.3.2建议升级到最新版本2.5.10.1

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

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

一定不要使用如下的方式

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


QUICK CONTACT
快捷通道
产?#20998;行?
解决方案
安全研究
技术支持
关于我们
重庆时时彩开奖 官方
<menuitem id="dp1tl"><video id="dp1tl"><thead id="dp1tl"></thead></video></menuitem>
<progress id="dp1tl"></progress>
<ruby id="dp1tl"><video id="dp1tl"><progress id="dp1tl"></progress></video></ruby>
<cite id="dp1tl"><video id="dp1tl"><th id="dp1tl"></th></video></cite>
<progress id="dp1tl"><var id="dp1tl"><strike id="dp1tl"></strike></var></progress>
<menuitem id="dp1tl"><del id="dp1tl"></del></menuitem>
<menuitem id="dp1tl"><video id="dp1tl"><thead id="dp1tl"></thead></video></menuitem>
<progress id="dp1tl"></progress>
<ruby id="dp1tl"><video id="dp1tl"><progress id="dp1tl"></progress></video></ruby>
<cite id="dp1tl"><video id="dp1tl"><th id="dp1tl"></th></video></cite>
<progress id="dp1tl"><var id="dp1tl"><strike id="dp1tl"></strike></var></progress>
<menuitem id="dp1tl"><del id="dp1tl"></del></menuitem>
淘宝快3 河南十一选五基本走势图文库 4场进球彩投注技巧 快乐10分钟开奖走势图 九龙老牌六合图库 牛牛彩票网骗局 明日nba让分胜负 排列五走势图(2006年) 欲钱买长生不老的生肖 3.5亿彩票大奖作假 湖北11选5开奖视频 三中三资料网站 福彩5分钟高频彩走势图 安徽快三走遗漏 双色球重号走势图表