EN
lanyun
technologies
银河实验室 深谙安全之道,热衷技术创新
LABORATORIES 银河实验室

漏洞描述:

Apache Struts2.3版本至2.3.34版本和2.5版本至2.5.16版本中存在远程代码执行漏洞。远程攻击者可利用该漏洞执行任意代码。

漏洞产生原因:

1.定义XML配置时namespace值未设置且上层动作配置(Action Configuration)中未设置或用通配符namespace。

2.url标签未设置value和action值且上层动作未设置或用通配符namespace。攻击者可利用漏洞执行RCE攻击。

       CVE编号:CVE-2018-11776

       漏洞评级:高危

       影响范围:

Struts 2.3 ~2.3.34

Struts2.5~2.5.16

不受影响的版本:Struts2.3.35,Struts 2.5.17

 

漏洞分析:

在ServletActionRedirectResult.java中。

 

\

\

                         

 

我们看到getUriFromActionMapping()返回一个使用namespace构造的URL字符串ActionMapping。然后传入setlocation()tmpLocation参数。

\

 

然后该代码调用execute()。

\

 

通过location字段来调用conditionalParse()

\

 

最后conditionalParse()执行,返回一个param。所以当namespace参数未配置中设置时,ServletActionRedirectResult会从中获取命名空间ActionProxy,然后将其作为OGNL表达式进行执行。

漏洞触发:

环境:

Struts 2版本:2.5.16

操作系统:windows 7

触发过程:

此漏洞触发需要满足两个条件:

1、在struts.xml中将alwaysSelectFullNamespace设置为true。

alwaysSelectFullNamespace是设置映射器是否总是选择完整的名称空间。

\

2、使用未指定命名空间的配置进行操作,或者使用通配符命名空间。

3、对漏洞进行测试。将struts中的一个配置文件(struts-actionchaining.xml)修改成这样,以更好的验证漏洞。Package没有指定命名空间,actionChainl动作执行后redirectAction跳转到register2.

\

访问我们搭建好的环境,将OGNL表达式插入到url中。

\

进行访问,我们得到以下结果,说明这个表达式被执行了。

\

修复建议:

1.目前厂商已发布升级补丁以修复漏洞,补丁获取链接:

https://cwiki.apache.org/confluence/display/WW/S2-057

2.升级到Struts 2.3.35或Struts 2.5.17

 

京公网安备 11010802024705号  京ICP备20030588号 Copyright © 兰云科技 www.lanysec.com 版权所有