美文网首页
复现Struts2-048高危漏洞

复现Struts2-048高危漏洞

作者: 网络安全通 | 来源:发表于2018-02-09 19:14 被阅读0次

    这个漏洞开始已经是之前的事情了,今天有时间复现了一下。一般漏洞复现需要环境和exp,这次我们从搭建环境开始,不要去网上直接搞。

    环境搭建

    操作系统我们使用了Winxp,

    大家都知道struts2是基于java的,首先我们需要java环境,具体就是jdk和jre的安装。具体网上都可以找到。最后有如下效果。

    接下来需要下载tomcat,http://tomcat.apache.org/download-70.cgi 这里可以下载到。解压下载的zip,运行bin/startup.bat,tomcat就运行起来了。效果如下

    接下来我们需要下载struts2,http://mirrors.opencas.org/apache/struts/2.3.32/struts-2.3.32-apps.zip

    只要是2.3.*版本就可以,apps版本可以快速配置。将zip解压到tomcat的webapps目录下,运行tomcat,webapps下的war包就会自动解压。

    访问http://192.168.198.129:8080/struts2-showcase/index.action 效果如下

    漏洞的攻击

    访问http://192.168.198.129:8080/struts2-showcase/integration/editGangster.action

    开启burp抓包,表单随便输入一点,提交。请求头如下

    我们修改请求头,如下图

    得到回显,已经命令执行了,如下图

    具体的exp,poc可以通过github搜索,如下图

    漏洞成因

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

    首先这里ActionForward forward = action.execute(mapping, actionForm, request,

    response);会把表单的请求处理回显给客户端,

    然后addActionMessage(getText(msg.getKey(),Arrays.asList(msg.getValues())));

    这里又调用了getText方法会把action messages传递给com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage ,

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

    解决方案

    不启用struts2-struts1-plugin插件

    建议升级到最新版本2.5.10.1

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

    messages.add(“msg”, newActionMessage(“struts1.gangsterAdded”, gform.getName()));

    一定不要使用如下的方式

    messages.add(“msg”, newActionMessage(“Gangster ” + gform.getName() + ” was added”));

    漏洞影响

    影响Apache Struts 2.3.x系列中启用了struts2-struts1-plugin插件的版本,某云的检测系统在1902个网站中只检查出8个

    如果想要了解更多网络空间安全知识,请访问 网络安全通,或者搜索 SecTown 。

    相关文章

      网友评论

          本文标题:复现Struts2-048高危漏洞

          本文链接:https://www.haomeiwen.com/subject/ledqtftx.html