Struts2 是全球使用最广泛的 Java web 服务端框架之一。Struts2 是 Struts 的下一代产品,是在 Struts1 和 WebWork 的技术基础上进行了合并的全新的 Struts2 框架。
Struts2官方于今年4月20日,发布s2-032漏洞通告:S2-032远程代码执行漏洞,该漏洞可以说是继S2-016漏洞以来,影响最大的Struts2漏洞。
漏洞详情 Struts2官方4月20日,发布s2-032漏洞通告,如下图:
不过自从s2-016漏洞以来,虽然Struts2出现过多个远程命令执行漏洞,但由于其利用条件十分有限,显得过于鸡肋,导致人们并没有去关注。直到25日下午,具体的说法是25日下午3点29分,故事发生了戏剧性地转变。menmen519牛在wooyun社区发布的这个PoC,引发了一场血雨腥风。
该PoC可直接向网站写入webshell,人们终于意识到这是个影响严重,利用简单的struts2高危漏洞。此后的几个小时内,漏洞利用的命令行工具、批量检测脚本、图形化工具、在线检测工具等被迅速开发出来,漏洞得到空前的重视。乌云、补天等漏洞平台都被该漏洞刷屏了!根据乌云漏洞中心的统计,该漏洞除了会影响银行与互联网企业(网易/多玩等)以外,还可能影响政府、证券、保险等行业,如下图:
某公司通过检测脚本对300个使用Struts2框架的网站进行检验,发现17个网站存在漏洞,存在漏洞的比例大概在5%左右。虽然该漏洞利用存在一定的前提条件,不如2012年的s2-016漏洞那样命中率高,但是使用Struts2框架的网站数量非常庞大,并且逐年增长,漏洞影响范围依然十分广泛。
漏洞危害
该漏洞利用简单、粗暴,甚至一个数据包就可以写入webshell,使服务器完全沦陷。该漏洞的危害主要有:
1. 攻击者可以远程获取目标站点的网站、web服务器、数据库、操作系统等信息。
2. 攻击者可以远程执行任意系统命令。
3. 攻击者可以远程上传webshell,在目标站点留下后门。
4. 攻击者可以以此漏洞为入侵点,进一步扩大入侵范围,提高获取的权限。
影响版本 1、禁用动态方法调用
修改Struts2的配置文件,将“struts.enable.DynamicMethodInvocation”的值设置为false,比如:
<constantname="struts.enable.DynamicMethodInvocation" value="false"/>;
2、升级软件版本
升级Struts版本至2.3.20.2、2.3.24.2或者2.3.28.1
关于Struts2,您或您身边的小伙伴们是否遇到,是如何防护的?欢迎跟帖~