Struts2-057远程代码执行漏洞

版权声明:本文为博主原创文章,未经博主允许不得转载,否则将追究法律责任。 https://blog.csdn.net/qq_29277155/article/details/81950170

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,从而导致远程代码执行漏洞的发生。

     据统计,Struts2 全球共有281021个对外开放,使用最多的国家是美国,共有78459个;中国第二65216;韩国第三,共有52421个;爱尔兰第四,共有12944个;乌拉圭第五,共有12927 个。中国地区中北京市最多,共有15471个;浙江省第二,共有15249个;广东省第三,共有5159个;上海市第四,共有3564个;江苏省第五,共有3292 个。

0x02 漏洞验证

本地验证:https://github.com/ym2011/POC-EXP/tree/master/Struts2/S2-057

在线验证1:http://0day.websaas.com.cn/

在线验证2:https://www.seebug.org/monster/?checker_id=37

详细验证:https://lgtm.com/blog/apache_struts_CVE-2018-11776

环境搭建:https://downloads.lgtm.com/snapshots/java/apache/struts/apache-struts-7fd1622-CVE-2018-11776.zip

0x03 影响版本

Struts 2.3 - Struts 2.3.34

Struts 2.5 - Struts 2.5.16

其他一些不受支持的Struts版本

0x04 修复建议

         官方提供的临时解决方案:当上层动作配置中没有设置或使用通配符namespace时,验证所有XML配置中的namespace,同时在JSP中验证所有url标签的value和action。

    目前Apache官方发布新版本(2.3.35或2.5.17版本)中修复了该漏洞,建议更新,下载地址http://archive.apache.org/dist/struts/

欢迎大家分享更好的思路,热切期待^^_^^ !

猜你喜欢

转载自blog.csdn.net/qq_29277155/article/details/81950170