Struts2-057 两个版本RCE漏洞分析(含EXP)

作者:媒体转发 时间:2018-08-28 01:29

字号

2018年8月22日,Apache Strust2发布最新安全公告,Apache Struts2存在远程代码执行的高危漏洞(S2-057/CVE-2018-11776),该漏洞由Semmle Security Research team的安全研究员Man YueMo发现。

该漏洞是由于在Struts2开发框架中使用namespace功能定义XML配置时,namespace值未被设置且在上层动作配置(Action Configuration)中未设置或用通配符namespace,可能导致远程代码执行。同理,url标签未设置value和action值且上层动作未设置或用通配符namespace时也可能导致远程代码执行,经过笔者自建环境成功复现漏洞且可以执行命令回显,文末有你们想要的 !

漏洞利用

笔者搭的环境分别是Strust2 2.3.20版本和 Strust2 2.3.34版本,漏洞利用大致分为三种方式:数值计算、弹出计算器、 命令回显。

2.1 数值计算

数值计算相对最简单,在URL上指定 %{100+200} 就可以发生跳转,得到计算的结果

Struts2-057 两个版本RCE漏洞分析

Struts2-057 两个版本RCE漏洞分析

2.2 弹出计算器

2.3.20版本的POC如下:

Struts2-057 两个版本RCE漏洞分析

Struts2-057 两个版本RCE漏洞分析

Struts2-057 两个版本RCE漏洞分析

Struts2-057 两个版本RCE漏洞分析

2.3.3 4版本参考的POC如下:

Struts2-057 两个版本RCE漏洞分析

Struts2-057 两个版本RCE漏洞分析

Struts2-057 两个版本RCE漏洞分析

Struts2-057 两个版本RCE漏洞分析

2.3 命令回显

两个版本都是利用com.opensymphony.xwork2.dispatcher.HttpServletResponse对象去打印命令执行后的回显数据

2.3.20版本的POC如下:

Struts2-057 两个版本RCE漏洞分析

2.3.34版本的POC如下:

Struts2-057 两个版本RCE漏洞分析

2.3.34版本的POC如下:

Struts2-057 两个版本RCE漏洞分析

攻击后效果如下图

Struts2-057 两个版本RCE漏洞分析

攻击后效果如下图

Struts2-057 两个版本RCE漏洞分析

Struts2-057 两个版本RCE漏洞分析

漏洞分析

在分析漏洞之前,需要配置struts.xml文件,这个文件就是struts2的核心配置文件,大多数的时候增减配置都需要操控这里;

Struts2-057 两个版本RCE漏洞分析

总共两处需要注意,第一处一定要配置struts.mapper.alwaysSelectFullNamespace  = true ,否则不能触发漏洞,这个配置的目的是设定是否一直在最后一个斜线之前的任何位置选定NameSpace;第二处result标签返回的类型选择 “ redirectAction 或 chain“ , 只有这两个配置选项的值是可以将action转发或者重定向;关于type具体可以参考下图

Struts2-057 两个版本RCE漏洞分析

总共两处需要注意,第一处一定要配置struts.mapper.alwaysSelectFullNamespace  = true ,否则不能触发漏洞,这个配置的目的是设定是否一直在最后一个斜线之前的任何位置选定NameSpace;第二处result标签返回的类型选择 “ redirectAction 或 chain“ , 只有这两个配置选项的值是可以将action转发或者重定向;关于type具体可以参考下图

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接