麻豆国内精品欧美在线-麻豆国内精品久久久久久-麻豆国产在线观看一区二区-麻豆国产在线观看免费-麻豆国产原创-麻豆国产一区二区在线观看

VBScript引擎中的漏洞會影響Internet Explorer運行Shellcode區塊鏈

曲速未來安全區 2018-08-30 20:01
分享到:
導讀

7月11日的時候發現了一個高風險的InternetExplorer(IE)漏洞,就在微軟7月補丁周二的第二天。

在7月11日的時候發現了一個高風險的Internet Explorer(IE)漏洞,就在微軟7月補丁周二的第二天。雖然此漏洞(現在指定為CVE-2018-8373)會影響最新版Windows中的VBScript引擎,但Internet Explorer 11并不容易受到攻擊,因為默認情況下Windows 10 Redstone 3(RS3)中的VBScript已被有效禁用。

然后發現了惡意網絡流量中的漏洞。URL如下所示:

圖1.使用的惡意URL

發現了這種漏洞之后,從而進行了更深入的分析。有趣的是,發現此漏洞利用示例使用與CVE-2018-8174相同的混淆技術,CVE-2018-8174是5月份修補的VBScript引擎遠程執行代碼漏洞。

圖2. CVE-2018-8373(左側)和CVE-2018-8174(右側)的比較

此外,這是用于運行shellcode的示例exploit的方法:

圖3. CVE-2018-8373(左側)和CVE-2018-8174(右側)如何運行shellcode的比較

經過調查懷疑這個漏洞利用樣本來自同一個創建者。因為經過分析顯示它在vbscript.dll中使用了一個新的use-after-free(UAF)漏洞。

漏洞根本原因分析

現在詳細介紹對此漏洞的分析,該漏洞已在微軟周二的八月補丁中得到解決。由于原始漏洞被嚴重混淆,就進行演示了一個概念驗證(PoC)來解釋如何利用此漏洞:

圖4. IE漏洞PoC

這個PoC定義了一個名為MyClass的類,它有一個名為array的成員變量和兩個名為Class_Initialize和Default Property Get P的成員函數。Class_Initialize是一個不推薦使用的方法,現在由New過程替換。首次實例化對象時會自動調用它。在該PoC中,Class_Initialize函數被重載,以及何時呼叫VBScriptClass::InitializeClass后,它會被分派到重載函數。

默認屬性是一個類屬性,可以在不指定的情況下訪問它。在此PoC中,Default Property Get函數重載MyClass的默認屬性。當調用訪問cls時,它將被調度到重載函數。

漏洞的觸發流程可以簡化為以下三個步驟:

1.設置cls = New MyClass

這將調用重載函數Class_Initialize。在Class_Initialize中,ReDim數組(2)將調用vbscript!RedimPreserveArray來創建一個元素的計數為3的數組:

圖5.內存中的ReDim數組

2. cls.array(2)

它將調用vbscript!AccessArray來獲取數組元素的地址。在vbscript!AccessArray中,它將首先檢查數組元素的索引是否超出邊界:

圖6.在vbscript中檢查元素索引!AccessArray

然后計算元素的地址,將其保存在堆棧中,并返回以下內容:

圖7.在堆棧上保存元素地址

3. cls.array(2)= cls

這將調用vbscript!AssignVar將MyClass默認屬性值設置為cls.array(2)。獲取MyClass默認屬性值時,調用公共默認屬性Get P并在公共默認屬性Get P中執行腳本ReDim數組(1),這將導致原始array.pvData被釋放:

圖8.釋放原始pvData

但是,如第二步所述,數組(2)的地址仍保存在堆棧中。公共默認屬性Get P的返回值將訪問釋放的內存,從而觸發vbscript中的use-after-free(UAF)漏洞!AssignVar:

圖9. vbscript中的崩潰!AssignVar

如前所述,vbscript!AccessArray檢查數組元素的索引是否超出邊界。但是當獲取類的默認屬性值時,它將觸發腳本回調函數Default Property獲取修改數組的長度,而不是在vbscript!AssignVar中訪問時再次檢查數組的元素。

剝削分析

可以通過以下三個步驟簡化利用:

  1. 使用此漏洞將二維數組的長度修改為0x0FFFFFFF。

  2. 實現讀/寫原語。

  3. 偽造CONTEXT結構并執行shellcode。

讓我們詳細談談利用:

1.修改二維數組的長度

首先,漏洞定義了兩個數組,在下圖中將其標記為array1和array2的數組1是先前在PoC中描述的陣列,且數組2是一個二維陣列,其中每個元素的值是3。

圖10. array2的定義

然后它使用腳本回調函數Default Property Get釋放原始array1.pvData并將array2設置為new array1.pvData。因為原來的大小array1.pvData,這是的0x30字節在存儲器中,相同array2.SAFEARRAY結構,一些的array2.SAFEARRAY結構將重用在原釋放的內存array1.pvData。同時,Default Property Get的返回值0x0FFFFFFFF將覆蓋array2.SAFEARRAY的SAFEARRAYBOUND結構,并將二維數組的長度修改為0x0FFFFFFF。

圖11.默認屬性Get的定義

圖12.修改數組長度的步驟

2. RW原語

這里得到一個數組,array1(index_vuln)(0x0FFFFFFE,2),其長度由UAF調節。通過搜索array1的元素,可以在以下腳本中找到index_vuln:

圖13.搜索array1(index_vuln)(0x0FFFFFFE,2)

然后它使用array1(index_vuln)(0x0FFFFFFE,2)來實現越界(OOB)并找到兩個數組元素混淆的元素。

圖14.搜索第一個數組的元素

圖15.搜索第二個數組的元素

這里漏洞獲取兩個數組的元素:array1(index_B)(0,0)和array1(index_vuln)(index_A,0),它們在內存中的距離為8字節。在內存中搜索的充分利用如下所示:

圖16.在內存中搜索方式的演示

最后,它使用兩個數組的元素來實現類型混淆的讀寫原語:

圖17. RW基元的實現

3.運行shellcode

它使用read原語來泄漏模塊的地址:

圖18.泄漏模塊的地址

通過將一些VARIANT的VarType修改為0x4d并將值修改為0,將調用vbscript!VAR :: Clear,然后將調用堆棧返回地址修改為NtContinue的地址并偽造CONTEXT結構以運行shellcode:

圖19.修改VARIANT

圖20.運行shellcode

經過一系列的分析,可以穩定地利用此漏洞。此外,由于它是今年在野外發現的第二個VB引擎漏洞利用,因此預計未來VB引擎中的其他漏洞發現并非遙不可及。

總結

作為第一道防線,區塊鏈安全公司WF曲速未來建議在可用時應用最新的安全補丁以防止漏洞利用。用戶還可以使用可以抵御可能漏洞攻擊的解決方案。主動,多層次的安全方法是利用漏洞(來自網關,端點,網絡和服務器)的威脅的關鍵。

漏洞 數組 array 使用 利用
分享到:

1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。


專題報道

主站蜘蛛池模板: 美女的让男人桶爽30分钟的 | 天莱男模gary | 北条麻妃一区 | 久久国产香蕉 | 亚洲gogo人体大胆西西安徽 | 免费网站看v片在线成人国产系列 | 午夜在线a亚洲v天堂网2019 | 99久久免费视频 | 日本一区二区三区在线 观看网站 | 暴露狂婷婷医院暴露tx | 精品亚洲麻豆1区2区3区 | 日本中文字幕在线视频站 | 娇妻被又大又粗又长又硬好爽 | 日韩福利网站 | 久久www免费人成高清 | 7777奇米四色| 高清视频在线观看+免费 | 五月天婷婷精品免费视频 | 美女扒开屁股 | 99在线视频精品 | 国内会所按摩推拿国产 | 国产成人精品福利色多多 | 国产在线一区二区视频 | 精品国产美女福利在线 | 香港论理午夜电影网 | 亚洲精品私拍国产福利在线 | 小货SAO边洗澡边CAO你动漫 | 白发在线视频播放观看免费 | 国产乱码在线精品可播放 | ckinese中国男同gay男男 | 国产乱妇无码大片在线观看 | 日韩亚洲国产欧美精品 | 俄罗斯bbbbbbbbb大片 | 日本在线一区二区 | 古代双性美人被老糟蹋 | 美国xaxwaswaskino 美妇在线 | 风间由美一区二区av101 | 亚洲AV精品无码喷水直播间 | 亚洲首页国产精品丝袜 | 青草久久精品亚洲综合专区 | 深夜视频在线播放 |