這篇文章給大家介紹如何進(jìn)行CVE-2018-4990 漏洞分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)建站成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、重慶App定制開發(fā)、成都手機(jī)網(wǎng)站制作、微信網(wǎng)站制作、軟件開發(fā)、雅安服務(wù)器托管等實行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)建站可以獲得的服務(wù)效果。測試版本:AcroRdrDC1700920044_en_US
漏洞模塊: Escript.api
漏洞函數(shù)
修復(fù)函數(shù)
問題分析
拷貝對象的時候把DWORD類型的對象地址作為BYTE類型進(jìn)行了拷貝,堆對象拷貝溢出漏洞。對象偏移在0x50的地方,也就是錯誤的位置。
Javascript里面噴射的對象代碼。
修復(fù)方案
定位到問題很好修復(fù)。
ROP技術(shù)
使用EScript.api模塊作為ROP執(zhí)行地址,基址為69260000,ROP表如下.
0D130064 692E2803 EScript.692E2803
0D130068 692E2803 EScript.692E2803
0D13006C 692E2802 EScript.692E2802
0D130070 693F7084 <&KERNEL32.VirtualAlloc>
0D130074 69271784 EScript.69271784
0D130078 693EAF26 EScript.693EAF26
0D13007C 69278000 EScript.69278000
0D130080 69283AAA EScript.69283AAA
0D130084 6936F282 EScript.6936F282
0D130088 00010201
0D13008C 692E2802 EScript.692E2802
0D130090 692695C4 EScript.692695C4
0D130094 77842FB6 kernel32.VirtualAlloc
0D130098 69283AAA EScript.69283AAA
第一條ROP指令RETN在692E2803,為一條RETN指令。因為有ASLR保護(hù),所以地址看起來不一樣。
ROP指令不進(jìn)行一一講解,接下來通過ROP技術(shù)構(gòu)造了一個函數(shù)VirtualAlloc分配一段內(nèi)存。注意看下EAX寄存器的值。
EAX是0x90909090,adobe的javascript的堆噴射器里面也有0x90909090。
使用VirtualAlloc函數(shù)申請了一段可讀可寫可執(zhí)行的內(nèi)存,大小為66049字節(jié)。為什么呢?因為惡意pdf里面還有個pe文件,shellcode應(yīng)該帶有一個pe加載器,直接在本進(jìn)程在內(nèi)存執(zhí)行pe文件。
接下來返回到了惡意內(nèi)存中的shellcode繼續(xù)執(zhí)行。注意一下,前面4字節(jié)是0x90。說明那個是填充的NOP指令。
Shellcode
第一個功能就是在shellcode長度(0x2710字節(jié)長度)后面搜索一個4字節(jié)的標(biāo)記0xBFAFBFAF。搜索標(biāo)記的作用是定位PE頭。
接下來用經(jīng)典的fs:[0x30]技術(shù)定位kernel32的基址。
接下來通過解析PE文件搜索GetProcAddress函數(shù)的地址,這也是windows經(jīng)典的shellcode技術(shù)。
使用getprocaddress函數(shù)得到loadlibrarya、virtualalloc、virtualfree、virtualprotect、getmodulehandlea的地址
接著是PE加載器的經(jīng)典功能,拷貝PE頭、修復(fù)區(qū)段、重定位、填充輸入表等等。
接著使用VirtualProtect函數(shù)改寫PE為可讀可執(zhí)行可寫。
最后調(diào)用PE文件的入口函數(shù),因為PE是dll所以入口是DllMain。
這個dll只有一個功能,使用MessageBoxA彈一個對話框。
Dll的入口函數(shù)。
關(guān)于如何進(jìn)行CVE-2018-4990 漏洞分析就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。