錦州市廣廈電腦維修|上門維修電腦|上門做系統(tǒng)|0416-3905144熱誠(chéng)服務(wù),錦州廣廈維修電腦,公司IT外包服務(wù)
topFlag1 設(shè)為首頁(yè)
topFlag3 收藏本站
 
maojin003 首 頁(yè) 公司介紹 服務(wù)項(xiàng)目 服務(wù)報(bào)價(jià) 維修流程 IT外包服務(wù) 服務(wù)器維護(hù) 技術(shù)文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統(tǒng)|0416-3905144熱誠(chéng)服務(wù)技術(shù)文章
關(guān)于最新CVE-2018-8120的Windows提權(quán)漏洞分析

作者: 佚名  日期:2018-06-15 07:41:55   來(lái)源: 本站整理

 一、背景介紹

5月中旬ESET披露了其捕獲的PDF文檔樣本中的兩枚0-day漏洞,其中包含針對(duì)Windows系統(tǒng)的內(nèi)核提權(quán)漏洞。該漏洞的漏洞編號(hào)為CVE-2018-8120,Windows已經(jīng)提供安全更新修復(fù)此安全漏洞。天融信阿爾法實(shí)驗(yàn)室將以Windows Server 2003 32位系統(tǒng)為目標(biāo),詳細(xì)介紹該漏洞成因、如何觸發(fā)漏洞、以及如何使用該漏洞制作“本地應(yīng)用程序權(quán)限提升”工具。
經(jīng)驗(yàn)證,諸多版本的Windows系統(tǒng)均存在該漏洞,文末同時(shí)附帶一份利用該漏洞制作的提權(quán)工具,以供學(xué)習(xí)。經(jīng)測(cè)試該工具支持Win2003 x32/x64、WinXP x32、Win7 x32/x64, Win2008 x32/64。

1.1 漏洞描述
部分版本Windows系統(tǒng)win32k.sys組件的NtUserSetImeInfoEx()系統(tǒng)服務(wù)函數(shù)內(nèi)部未驗(yàn)證內(nèi)核對(duì)象中的空指針對(duì)象,普通應(yīng)用程序可利用該空指針漏洞以內(nèi)核權(quán)限執(zhí)行任意代碼。
1.2 受影響的系統(tǒng)版本
以下軟件版本受到影響。未列出的版本要么超過(guò)其支持生命周期,要么不受影響。要確定軟件版本或版本的支持生命周期,請(qǐng)查閱Microsoft支持生命周期。
Windows 7 for 32-bit Systems Service Pack 1  
Windows 7 for x64-based Systems Service Pack 1      
Windows Server 2008 for 32-bit Systems Service Pack 2
Windows Server 2008 for 32-bit Systems Service Pack 2
Windows Server 2008 for Itanium-Based Systems ServicePack 2
Windows Server 2008 for x64-based Systems Service Pack 2
Windows Server 2008 for x64-based Systems Service Pack 2
Windows Server 2008 R2 for Itanium-Based Systems ServicePack 1
Windows Server 2008 R2 for x64-based Systems ServicePack 1
Windows Server 2008 R2 for x64-based Systems ServicePack 1
1.3 漏洞編號(hào)
CVE-2018-8120
二、漏洞細(xì)節(jié)
2.1漏洞位置及形成原因
漏洞函數(shù)位于win32k.sys模塊的SetImeInfoEx() 函數(shù), 該函數(shù)在使用一個(gè)內(nèi)核對(duì)象的字段之前并沒有進(jìn)行是否為空的判斷,當(dāng)該值為空時(shí),函數(shù)直接讀取零地址內(nèi)存。如果在當(dāng)前進(jìn)程環(huán)境中沒有映射零頁(yè)面,該函數(shù)將觸發(fā)頁(yè)面錯(cuò)誤異常,導(dǎo)致系統(tǒng)藍(lán)屏發(fā)生。
以下是漏洞產(chǎn)生位置的反匯編代碼

可以看到,漏洞所在函數(shù)SetImeInfoEx()接收2個(gè)參數(shù),漏洞的產(chǎn)生和參數(shù)1的結(jié)構(gòu)體指針有關(guān),下面跟蹤一下參數(shù)1的來(lái)源。win32k!NtUserSetImeInfoEx() 系統(tǒng)服務(wù)函數(shù)調(diào)用了SetImeInfoEx()

_GetProcessWindowStation()返回當(dāng)前進(jìn)程的WindowStation內(nèi)核對(duì)象, 當(dāng)做參數(shù)1調(diào)用SetImeInfoEx()。以下是WindowStation內(nèi)核對(duì)象的內(nèi)存結(jié)構(gòu)

程序可以通過(guò)系統(tǒng)提供的接口CreateWindowStation()和SetProcessWindowStation(),新建一個(gè)新的WindowStation對(duì)象并和當(dāng)前進(jìn)程關(guān)聯(lián)起來(lái),值得注意的是,使用CreateWindowStation() 新建的WindowStation對(duì)象其偏移0×14位置的spklList字段的值默認(rèn)是零。
根據(jù)SetImeInfoEx()函數(shù)的流程,當(dāng)WindowStation->spklList字段為0,函數(shù)繼續(xù)執(zhí)行將觸發(fā)0地址訪問(wèn)異常。
2.2漏洞觸發(fā)驗(yàn)證
前文已經(jīng)介紹了漏洞所在位置,下面編寫漏洞測(cè)試代碼,測(cè)試該漏洞是否能夠觸發(fā)系統(tǒng)藍(lán)屏。

NtUserSetImeInfoEx()系統(tǒng)服務(wù)函數(shù)未導(dǎo)出,需要自己在用戶進(jìn)程中調(diào)用該系統(tǒng)服務(wù)函數(shù),以執(zhí)行漏洞函數(shù)SetImeInfoEx()。

其中SyscallIndex的計(jì)算,根據(jù)系統(tǒng)ShadowSSDT表導(dǎo)出序號(hào)計(jì)算。

編譯生成poc,開始執(zhí)行


系統(tǒng)藍(lán)屏,可以發(fā)現(xiàn)錯(cuò)誤產(chǎn)生位置為0xBF91B399,下面在IDA中查看對(duì)應(yīng)地址的指令,正是前文指出的SetImeInfoEx()中針對(duì)pWindowStation->spklList字段進(jìn)行內(nèi)存訪問(wèn)的代碼。

三、漏洞利用
3.1漏洞利用之任意代碼執(zhí)行
由于SetImeInfoEx()沒有正確的處理內(nèi)存中的空指針對(duì)象, 普通應(yīng)用程序可利用該漏洞以系統(tǒng)權(quán)限執(zhí)行任意代碼,下面將詳細(xì)介紹如何在該漏洞現(xiàn)場(chǎng)實(shí)現(xiàn)任意代碼執(zhí)行。

[1] [2]  下一頁(yè)已知漏洞產(chǎn)生的原因是零地址內(nèi)存訪問(wèn)違例,如果在漏洞函數(shù)運(yùn)行的進(jìn)程中,零地址處的內(nèi)存分頁(yè)完成映射,則函數(shù)將繼續(xù)執(zhí)行。下面繼續(xù)看看函數(shù)如果繼續(xù)運(yùn)行,會(huì)發(fā)生什么情況。


如上圖所示,漏洞產(chǎn)生函數(shù)后續(xù)執(zhí)行過(guò)程中會(huì)執(zhí)行內(nèi)存拷貝,且拷貝源來(lái)自于參數(shù)2,屬于用戶可控內(nèi)容。如果拷貝目標(biāo)v4可控,則可以實(shí)現(xiàn)任意內(nèi)存地址寫入(且漏洞函數(shù)運(yùn)行在內(nèi)核權(quán)限, 內(nèi)核空間與用戶空間內(nèi)存均有權(quán)限讀寫)。至此,如果可以實(shí)現(xiàn)任意內(nèi)存地址寫入,則可以通過(guò)覆蓋系統(tǒng)服務(wù)函數(shù)指針的方式, 實(shí)現(xiàn)任意代碼執(zhí)行。
現(xiàn)在的目標(biāo)是使得拷貝目標(biāo)v4可控,已知v4來(lái)自spklList+0x2C,當(dāng)spklList為零,而零地址分頁(yè)內(nèi)存又正好被應(yīng)用程序映射,一來(lái)SetImeInfoEx()可以繼續(xù)執(zhí)行不觸發(fā)異常,二來(lái)也是v4是可控的。
通過(guò)內(nèi)核未導(dǎo)出函數(shù)可以在部分Windows 系統(tǒng)上成功映射零地址分頁(yè)的內(nèi)存,函數(shù)原型所示

映射零地址分頁(yè)內(nèi)存后,可以在該地址上進(jìn)行內(nèi)核對(duì)象的構(gòu)造,以滿足SetImeInfoEx()函數(shù)的檢查, 通過(guò)漏洞函數(shù)的memcpy操作覆蓋關(guān)鍵系統(tǒng)服務(wù)函數(shù)指針。 改造漏洞驗(yàn)證代碼,嘗試覆蓋ntoskrnl!HalDispatchTable表中第二項(xiàng)的hal!HaliQuerySystemInformation() 函數(shù)指針,NtQueryIntervalProfile()函數(shù)在運(yùn)行過(guò)程中會(huì)從HalDispatchTable表中調(diào)用該函數(shù)。使得用戶程序在調(diào)用系統(tǒng)函數(shù)NtQueryIntervalProfile()的時(shí)候,執(zhí)行由應(yīng)用程序設(shè)定的ShellCode。


最終驗(yàn)證該代碼不能成功覆蓋預(yù)設(shè)的函數(shù)指針,原因很簡(jiǎn)單。目標(biāo)地址0x8088e07c,無(wú)法通過(guò)漏洞函數(shù)的第二個(gè)判斷,位置如下圖所示

首先直接這樣觸發(fā)漏洞覆蓋該函數(shù)指針表0x15C字節(jié)大小,造成影響較大,二來(lái)由于漏洞函數(shù)本身的限制,挑選合適的覆蓋位置也比較困難, 下面簡(jiǎn)要介紹一種流行的方法,用來(lái)協(xié)助我們進(jìn)行精準(zhǔn)的覆蓋。
利用Bitmap內(nèi)核對(duì)象中的pvScan0字段,進(jìn)行的任意內(nèi)存地址讀寫。通過(guò)系統(tǒng)API SetBitMap()和GetBitMap()可以實(shí)現(xiàn)指定地址寫入/讀取功能。該方法已有文章進(jìn)行詳細(xì)的分析,下面附一篇文章鏈接讀者可以去查閱,這里不再贅述。
https://bbs.pediy.com/thread-225436.htm
下面修改漏洞驗(yàn)證代碼,首先利用漏洞覆蓋預(yù)先創(chuàng)建的BitMap內(nèi)核對(duì)象, 接著再使用BitMap內(nèi)核對(duì)象進(jìn)行精準(zhǔn)覆蓋。實(shí)現(xiàn)函數(shù)指針覆蓋,以下是加入使用BitMap進(jìn)行精準(zhǔn)覆蓋的代碼。


成功的覆蓋指定的函數(shù)指針,應(yīng)用程序接著調(diào)用該系統(tǒng)服務(wù)函數(shù)接口,操作系統(tǒng)就會(huì)執(zhí)行我們?cè)O(shè)定的Shellcode,下面是一段使用SYSTEM進(jìn)程 EPROCESS結(jié)構(gòu)的Token替換當(dāng)前進(jìn)程Token的代碼,執(zhí)行過(guò)該代碼后,本進(jìn)程具有和SYSTEM進(jìn)程一樣的權(quán)限。

在替換當(dāng)前進(jìn)程EPROCESS結(jié)構(gòu)中Token標(biāo)識(shí)后,當(dāng)前進(jìn)程后續(xù)創(chuàng)建的進(jìn)程均為SYSTEM權(quán)限的進(jìn)程,成功進(jìn)行權(quán)限提升獲得SYSTEM權(quán)限。
3.2 漏洞利用實(shí)例-提權(quán)工具
本文演示之漏洞利用代碼取自GitHub 感謝作者@unamer。 該作者開源的代碼包含了一份針對(duì)Win7及Win 2008系統(tǒng)的提權(quán)工具。
筆者根據(jù)該代碼做了部分修改,增添了針對(duì)Windows 2003 sp2(x32 x64)及Windows XP sp2 x32系統(tǒng)的提權(quán)支持。主要是漏洞利用代碼中自行調(diào)用了系統(tǒng)內(nèi)核服務(wù)函數(shù),不同系統(tǒng)其系統(tǒng)服務(wù)調(diào)用號(hào)并不一致。同時(shí)還修改了部分結(jié)構(gòu)體偏移,以支持Win2003和WinXP。在WinXP x64系統(tǒng)上, 由于NtUserSetImeInfoEx() 中對(duì)win32k!gpsi結(jié)構(gòu)中標(biāo)志位進(jìn)行驗(yàn)證而未能執(zhí)行含有漏洞的代碼,故未能成功利用該漏洞。
修改后的漏洞利用工具源碼及Bin下載地址如下:
https://github.com/alpha1ab/CVE-2018-8120
四、修復(fù)建議
目前微軟在2018年五月的安全更新中已經(jīng)包含了針對(duì)該漏洞的補(bǔ)丁程序,安裝使用即可避免受到該漏洞的影響。
漏洞修復(fù)程序下載地址:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8120
 



熱門文章
  • 機(jī)械革命S1 PRO-02 開機(jī)不顯示 黑...
  • 聯(lián)想ThinkPad NM-C641上電掉電點(diǎn)不...
  • 三星一體激光打印機(jī)SCX-4521F維修...
  • 通過(guò)串口命令查看EMMC擦寫次數(shù)和判...
  • IIS 8 開啟 GZIP壓縮來(lái)減少網(wǎng)絡(luò)請(qǐng)求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對(duì)講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機(jī)始終停留在開機(jī)界面...
  • 常見打印機(jī)清零步驟
  • 安裝驅(qū)動(dòng)時(shí)提示不包含數(shù)字簽名的解...
  • 共享打印機(jī)需要密碼的解決方法
  • 圖解Windows 7系統(tǒng)快速共享打印機(jī)的...
  • 錦州廣廈電腦上門維修

    報(bào)修電話:13840665804  QQ:174984393 (聯(lián)系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號(hào):遼ICP備2023002984號(hào)-1
    上門服務(wù)區(qū)域: 遼寧錦州市區(qū)
    主要業(yè)務(wù): 修電腦,電腦修理,電腦維護(hù),上門維修電腦,黑屏藍(lán)屏死機(jī)故障排除,無(wú)線上網(wǎng)設(shè)置,IT服務(wù)外包,局域網(wǎng)組建,ADSL共享上網(wǎng),路由器設(shè)置,數(shù)據(jù)恢復(fù),密碼破解,光盤刻錄制作等服務(wù)

    技術(shù)支持:微軟等
    主站蜘蛛池模板: 亚洲一区爱区精品无码| 中文午夜人妻无码看片| 国产av无码专区亚洲av毛片搜| 无码国产精品一区二区免费| 午夜爽喷水无码成人18禁三级 | 成人无码区免费视频观看| 无码 免费 国产在线观看91| 亚洲国产精品无码久久SM| 亚洲av永久无码天堂网| 无码国产精品一区二区免费模式| 国产午夜鲁丝片AV无码免费| 亚洲av永久无码嘿嘿嘿| 国产亚洲精品无码成人| 国产一区二区三区无码免费| 亚洲一区二区无码偷拍| 亚洲av午夜精品无码专区| 亚洲一区AV无码少妇电影☆| 无码专区一va亚洲v专区在线| 亚洲a∨无码男人的天堂| 久久老子午夜精品无码怎么打| 人妻无码中文字幕| HEYZO无码中文字幕人妻| 人妻丰满av无码中文字幕| av无码人妻一区二区三区牛牛| 国产成人无码a区在线观看视频免费| 亚洲的天堂av无码| 精品久久亚洲中文无码| 亚洲AV无码久久精品成人| 国产精品va无码一区二区| 熟妇人妻系列aⅴ无码专区友真希| 最新亚洲人成无码网站| 日韩免费a级毛片无码a∨| 无码人妻精品一区二区三区久久久| 日韩精品无码一区二区三区免费| 2014AV天堂无码一区| 国产成年无码久久久久毛片| 亚洲精品无码不卡在线播放HE| 国产成年无码久久久久毛片| 亚洲爆乳精品无码一区二区三区 | 综合国产在线观看无码| 国产综合无码一区二区辣椒|