0x00 前言
Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web 应用的开源MVC框架,主要提供两个版本框架产品: Struts 1和Struts 2。 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
0x01 漏洞描述
Apache wiki更新了一个Struts2的远程代码执行漏洞(S2-057),漏洞威胁等级为高危,漏洞对应的CVE编号为CVE-2018-11776。Apache wiki链接:https://cwiki.apache.org/confluence/display/WW/S2-057
定义XML配置时如果没有设置namespace的值,并且上层动作配置中并没有设置或使用通配符namespace时,可能会导致远程代码执行漏洞的发生。同样也可能因为url标签没有设置value和action的值,并且上层动作并没有设置或使用通配符namespace,从而导致远程代码执行漏洞的发生。
0x02 影响版本
Struts 2.3 - Struts 2.3.34
Struts 2.5 - Struts 2.5.16
其他一些不受支持的Struts版本
0x03 修复建议
官方提供的临时解决方案:当上层动作配置中没有设置或使用通配符namespace时,验证所有XML配置中的namespace,同时在JSP中验证所有url标签的value和action。
目前Apache官方发布新版本(2.3.35或2.5.17版本)中修复了该漏洞,建议更新,下载地址http://archive.apache.org/dist/struts/
欢迎大家分享更好的思路,热切期待^^_^^ !