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 版权所有