Struts 2 曝高危漏洞(S2-048),黑客可远程执行任意代码

  • 来源:深信服安全中心
  • 发布时间:2017-07-25
#

事件描述

    7 月 7 日晚,Apache 官方发布 Struts 2 紧急漏洞公告(S2-048),CVE 编号CVE-2017-9791。公告中披露,Struts2 的 showcase 应用中存在远程代码执行漏洞。攻击者利用此漏洞可在系统中执行添加用户,查看、修改或删除文件等命令操作。

S2-048 漏洞影响的版本有:Struts 2.3.x 启用了 struts2-struts1-plugin 插件的版本。

千里百科

    Struts2 是一个基于 MVC 设计模式的Web应用框架,它本质上相当于一个servlet,在 MVC 设计模式中,Struts2 作为控制器(Controller)来建立模型与视图的数据交互。Struts2 是世界上最流行的 Java Web 服务器框架之一。

漏洞描述

    当 Struts2 中的  Struts1 插件(非默认插件)启用的情况下,攻击者构造恶意字段值输入系统,这些不可信的输入被带入到 ActionMessage 类中的错误信息中,可造成远程任意代码执行。

专家解读

    截止发稿时间,公网已经暴露多个漏洞利用 PoC,随机选取选取PoC如下:

    在环境中找到漏洞点 /skill/save.action,并在 name 参数中植入编辑好的恶意代码,可看到成功执行 “whoami” 命令,如下图所示

image.png

深信服检测方案

    深信服 “云眼” 检测系统已同步更新针对 S2-048 漏洞的检测功能,不清楚资产是否受影响的用户,请提交域名到 “云眼” 平台在线检测获取结果,检测地址:

https://rm.sangfor.com.cn/src/html/login/login.html?type=eyeCloud

解决方案

    1、使用 resource keys 替代将原始消息直接传递给 ActionMessage 的方式。 如下所示

    messages.add("msg", new ActionMessage("struts1.gangsterAdded", gform.getName()));

    不要使用如下的方式

    messages.add("msg", new ActionMessage("Gangster " + gform.getName() + " was added

    2、在非必要的情况下禁用 struts2-struts1-plugin 插件。将 struts2-struts1-plugin-2.3.x.jar 文件从 “/WEB-INF/lib” 目录中移动到其他文件夹或者删除。

    深信服下一代防火墙用户,请升级安全防护规则到 20170708 及其以后版本,可轻松防御针对此漏洞的攻击;深信服 “云盾” 用户,无需升级,可直接获得安全防护。