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

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

 一、背景介紹

5月中旬ESET披露了其捕獲的PDF文檔樣本中的兩枚0-day漏洞,其中包含針對Windows系統(tǒng)的內(nèi)核提權(quán)漏洞。該漏洞的漏洞編號為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)均存在該漏洞,文末同時附帶一份利用該漏洞制作的提權(quán)工具,以供學(xué)習(xí)。經(jīng)測試該工具支持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)核對象中的空指針對象,普通應(yīng)用程序可利用該空指針漏洞以內(nèi)核權(quán)限執(zhí)行任意代碼。
1.2 受影響的系統(tǒ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 漏洞編號
CVE-2018-8120
二、漏洞細(xì)節(jié)
2.1漏洞位置及形成原因
漏洞函數(shù)位于win32k.sys模塊的SetImeInfoEx() 函數(shù), 該函數(shù)在使用一個內(nèi)核對象的字段之前并沒有進(jìn)行是否為空的判斷,當(dāng)該值為空時,函數(shù)直接讀取零地址內(nèi)存。如果在當(dāng)前進(jìn)程環(huán)境中沒有映射零頁面,該函數(shù)將觸發(fā)頁面錯誤異常,導(dǎo)致系統(tǒng)藍(lán)屏發(fā)生。
以下是漏洞產(chǎn)生位置的反匯編代碼

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

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

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

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


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

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

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


如上圖所示,漏洞產(chǎn)生函數(shù)后續(xù)執(zhí)行過程中會執(zhí)行內(nè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)存地址寫入,則可以通過覆蓋系統(tǒng)服務(wù)函數(shù)指針的方式, 實(shí)現(xiàn)任意代碼執(zhí)行。
現(xiàn)在的目標(biāo)是使得拷貝目標(biāo)v4可控,已知v4來自spklList+0x2C,當(dāng)spklList為零,而零地址分頁內(nèi)存又正好被應(yīng)用程序映射,一來SetImeInfoEx()可以繼續(xù)執(zhí)行不觸發(fā)異常,二來也是v4是可控的。
通過內(nèi)核未導(dǎo)出函數(shù)可以在部分Windows 系統(tǒng)上成功映射零地址分頁的內(nèi)存,函數(shù)原型所示

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


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

首先直接這樣觸發(fā)漏洞覆蓋該函數(shù)指針表0x15C字節(jié)大小,造成影響較大,二來由于漏洞函數(shù)本身的限制,挑選合適的覆蓋位置也比較困難, 下面簡要介紹一種流行的方法,用來協(xié)助我們進(jìn)行精準(zhǔn)的覆蓋。
利用Bitmap內(nèi)核對象中的pvScan0字段,進(jìn)行的任意內(nèi)存地址讀寫。通過系統(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)核對象, 接著再使用BitMap內(nèi)核對象進(jìn)行精準(zhǔn)覆蓋。實(shí)現(xiàn)函數(shù)指針覆蓋,以下是加入使用BitMap進(jìn)行精準(zhǔn)覆蓋的代碼。


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

在替換當(dāng)前進(jìn)程EPROCESS結(jié)構(gòu)中Token標(biāo)識后,當(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。 該作者開源的代碼包含了一份針對Win7及Win 2008系統(tǒng)的提權(quán)工具。
筆者根據(jù)該代碼做了部分修改,增添了針對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)用號并不一致。同時還修改了部分結(jié)構(gòu)體偏移,以支持Win2003和WinXP。在WinXP x64系統(tǒng)上, 由于NtUserSetImeInfoEx() 中對win32k!gpsi結(jié)構(gòu)中標(biāo)志位進(jìn)行驗(yàn)證而未能執(zhí)行含有漏洞的代碼,故未能成功利用該漏洞。
修改后的漏洞利用工具源碼及Bin下載地址如下:
https://github.com/alpha1ab/CVE-2018-8120
四、修復(fù)建議
目前微軟在2018年五月的安全更新中已經(jīng)包含了針對該漏洞的補(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維修...
  • 通過串口命令查看EMMC擦寫次數(shù)和判...
  • IIS 8 開啟 GZIP壓縮來減少網(wǎng)絡(luò)請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機(jī)始終停留在開機(jī)界面...
  • 常見打印機(jī)清零步驟
  • 安裝驅(qū)動時提示不包含數(shù)字簽名的解...
  • 共享打印機(jī)需要密碼的解決方法
  • 圖解Windows 7系統(tǒng)快速共享打印機(jī)的...
  • 錦州廣廈電腦上門維修

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

    技術(shù)支持:微軟等
    主站蜘蛛池模板: 无码中文字幕人妻在线一区二区三区| 人妻无码久久一区二区三区免费| 亚洲精品无码mⅴ在线观看| 白嫩少妇激情无码| 亚洲 无码 在线 专区| 国产∨亚洲V天堂无码久久久| 97精品人妻系列无码人妻| 本免费AV无码专区一区| 亚洲精品无码专区久久| 国产午夜无码专区喷水| 国产AV无码专区亚洲AV麻豆丫| 在线观看免费无码视频| 久久水蜜桃亚洲AV无码精品| 熟妇人妻中文字幕无码老熟妇| 成人h动漫精品一区二区无码| 青青草无码免费一二三区| 曰韩精品无码一区二区三区 | 亚洲AV无码专区日韩| 久久久久成人精品无码中文字幕| 亚洲成av人片在线观看天堂无码 | 午夜福利av无码一区二区| 无码av中文一二三区| 无码中文字幕日韩专区视频| 日韩AV无码精品人妻系列| 无码激情做a爰片毛片AV片| 精品无码人妻夜人多侵犯18 | 国产精品白浆在线观看无码专区| 亚洲精品无码专区久久久| 国产人成无码视频在线观看| 亚洲AV无码一区二区一二区| 精品久久亚洲中文无码| 中文字幕日产无码| 亚洲成在人线在线播放无码| 97久久精品无码一区二区| 精品无码国产自产在线观看水浒传 | 无码av免费毛片一区二区| 日韩精品无码一区二区三区免费| 国产AV无码专区亚洲AV手机麻豆| 成在线人免费无码高潮喷水| 国产日韩AV免费无码一区二区| 丝袜无码一区二区三区|