1. <div id="zkwa0"></div>

    <dd id="zkwa0"><tr id="zkwa0"></tr></dd>
    <div id="zkwa0"><ol id="zkwa0"></ol></div>
    1. <div id="zkwa0"><tr id="zkwa0"><object id="zkwa0"></object></tr></div>
      <div id="zkwa0"><tr id="zkwa0"></tr></div>

    2. Struts(S2-048)远程命令执行漏洞分析
      时间:2017-07-08来源:点击:5727分享:
      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;行?
      解决方案
      安全研究
      技术支持
      关于我们
      河北省11选5

      1. <div id="zkwa0"></div>

        <dd id="zkwa0"><tr id="zkwa0"></tr></dd>
        <div id="zkwa0"><ol id="zkwa0"></ol></div>
        1. <div id="zkwa0"><tr id="zkwa0"><object id="zkwa0"></object></tr></div>
          <div id="zkwa0"><tr id="zkwa0"></tr></div>

          1. <div id="zkwa0"></div>

            <dd id="zkwa0"><tr id="zkwa0"></tr></dd>
            <div id="zkwa0"><ol id="zkwa0"></ol></div>
            1. <div id="zkwa0"><tr id="zkwa0"><object id="zkwa0"></object></tr></div>
              <div id="zkwa0"><tr id="zkwa0"></tr></div>

            2. 山东11选5任2计划网站 足彩进球彩对阵表 江苏快三开奖结果查询结果是哇 湖北30选5综合走势图 甘肃快3开奖结果预测 排列五走势图最近80期 山西十一选五今天的 澳洲幸运5在线计划 云南十一选五详情 500wan重庆时时彩 2019最新买马资料网站 推荐买nba篮彩的app 双色球基本走势图表 手机体育彩票官方网站 3d彩票开奖结果