欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

MS08-067漏洞原理及過程的示例分析

MS08-067漏洞原理及過程的示例分析,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站設計、做網(wǎng)站、內(nèi)鄉(xiāng)網(wǎng)絡推廣、小程序制作、內(nèi)鄉(xiāng)網(wǎng)絡營銷、內(nèi)鄉(xiāng)企業(yè)策劃、內(nèi)鄉(xiāng)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供內(nèi)鄉(xiāng)建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:aaarwkj.com

0x01 MS08-067漏洞原理

MS08-067漏洞是通過MSRPC over SMB通道調(diào)用Server服務程序中的NetPathCanonicalize函數(shù)時觸發(fā)的,而NetPathCanonicalize函數(shù)在遠程訪問其他主機時,會調(diào)用NetpwPathCanonicalize函數(shù),對遠程訪問的路徑進行規(guī)范化,而在NetpwPathCanonicalize函數(shù)中存在的邏輯錯誤,造成棧緩沖區(qū)可被溢出,而獲得遠程代碼執(zhí)行(Remote Code Execution)。

所謂路徑規(guī)范化,就是將路徑字符串中的【/】轉(zhuǎn)換為【\】,同時去除相對路徑【.\】和【..\】。如:

**/*/./**   =>  **\*\**
**\*\..\**  =>  **\**

在路徑規(guī)范化的操作中,服務程序?qū)β窂阶址牡刂房臻g檢查存在邏輯漏洞。攻擊者通過精心設計輸入路徑,可以在函數(shù)去除【..\】字符串時,把路徑字符串中內(nèi)容復制到路徑串之前的地址空間中(低地址),達到覆蓋函數(shù)返回地址,執(zhí)行任意代碼的目的。

路徑處理流程

NetpwPathCanonicalize函數(shù)并沒有直接進行輸入路徑和規(guī)范化,而是繼續(xù)調(diào)用了下級函數(shù)CanonicalizePathName來進行路徑整理,將待整理的路徑字符串進行規(guī)范化,然后再保存到預先分配的輸出路徑緩沖區(qū)buffer中。

路徑處理流程:

1.檢查待整理路徑的第一個字符;

2.調(diào)用msvcrt.dll模塊的wcslen函數(shù)計算路徑長度;

3.調(diào)用msvcrt.dll模塊的wcscat函數(shù)把待整理路徑全部復制到新申請的內(nèi)存中。

4.調(diào)用wcscpy函數(shù),去掉待整理路徑中第一個表示父目錄的相對路徑復制到strTemp,如:

\******\..\..\***   =>  \..\***

5.循環(huán)調(diào)用wcscpy,直到路徑整理完畢。

在這里我們知道了,在規(guī)范化復制時要尋找表示父目錄的【..\】字符串及其前面的一個【\】字符串,將這一段去掉并將新路徑復制。

MS08-067漏洞原理及過程的示例分析

如圖,第一次檢查時去掉了第一個相對路徑并復制到緩沖區(qū)

但是,當【..\】字符串在路徑字符串的最前面時,那么其前面的一個【\】就在緩沖區(qū)外面了,就是在這里產(chǎn)生了向前(低地址)的溢出。

MS08-067漏洞原理及過程的示例分析

緩沖區(qū)溢出

需要明確的是,微軟對路徑規(guī)范化時的字符串復制可能出現(xiàn)的緩沖區(qū)溢出做了初步的防御。

在每次向緩沖區(qū)中復制字符串時,無論是用wcsccpy還是wcscat,在復制前總要比較源字符串的長度,保證長度小于某個值(207),否則不會繼續(xù)復制,這一策略確保緩沖區(qū)不會向高地址溢出,即當前函數(shù)返回時不會發(fā)生問題。

但是注意,在規(guī)范化表示路徑,尋找父目錄的【..\】字符串前面的【\】字符時,程序做了判斷和邊界檢查:如果當前比較字符的地址與源字符串地址相同,就表明整個字符串已經(jīng)查找完畢,程序就會停止查找。

然而它唯獨漏了一種情況,就是當父目錄相對路徑【..\】字符串在源字符串的開頭時,在開始查找時比較的字符串(【\】到【..\】)位于緩沖區(qū)之外,這導致了復制的字符串向低地址的溢出,造成函數(shù)wcscpy的返回地址被覆蓋。

MS08-067漏洞原理及過程的示例分析

0x02 漏洞還原分析

實驗環(huán)境

靶機:Windows2003 SP0 EN

漏洞組件:netapi32.dll

工具:IDA Pro、OllyDbg

選擇Windows XP SP3 EN系統(tǒng)主機作為分析環(huán)境,定位到包含該安全漏洞的系統(tǒng)模塊netapi32.dll(路徑C:\Windows\system32)和調(diào)用漏洞服務Server的進程svchost.exe,目標進程命令行為:

C:\Windows\System32\svchost.exe-k netsvcs

用IDA pro打開netapi32.dll,找到漏洞所在的NetpwPathCanonicalize函(每次運行堆棧中的地址會不同,但各函數(shù)的地址一樣),如圖在書中提到:

查看該函數(shù)流程圖,可以看到,此函數(shù)并沒有直接進行輸入路徑的規(guī)范化, 而是繼續(xù)調(diào)用了下級函數(shù)CanonicalizePathName

然而在實際操作中并沒有發(fā)現(xiàn)CanonicalizePathName這個函數(shù),并且多種資料表明應當是調(diào)用CanonPathName函數(shù)進行規(guī)范化。

IDA分析NetpwPathCanonicalize函數(shù)代碼(F5 + 整理 + 主要代碼):

該函數(shù)聲明如下:

DWORD NetpwPathCanonicalize(
    LPWSTR PathName, //需要標準化的路徑
    LPWSTR Outbuf, //存儲標準化后的路徑的Buffer
    DWORD OutbufLen, //Buffer長度
    LPWSTR Prefix, //可選參數(shù),當PathName是相對路徑時有用
    LPDWORD PathType, //存儲路徑類型
    DWORD Flags // 保留,為0
 )

動態(tài)調(diào)試

通過wmic查看命令行參數(shù)為svchost.exe -k netsvcs的進程pid:

MS08-067漏洞原理及過程的示例分析

打開OllyDbg,點擊file->attach,附著到svchost.exe進程上:

MS08-067漏洞原理及過程的示例分析

View->Executable modules雙擊netapi32,在cpu指令窗口右鍵選Search for查找exec(label) in current module,找到函數(shù)NetpwPathCanonicalize,地址為71C#44A3E,在此處設下斷點:

MS08-067漏洞原理及過程的示例分析

追蹤漏洞觸發(fā)過程

回到CPU指令窗口運行程序,然后攻擊機Metasploit加載ms08_067_netapi模塊并exploit:

MS08-067漏洞原理及過程的示例分析

NetpwPathCanonicalize中斷

分析環(huán)境中的svchost程序會中斷在NetpwPathCanonicalize函數(shù)的入口地址處。該函數(shù)的傳入?yún)?shù)如下所示:

MS08-067漏洞原理及過程的示例分析

esp            [esp]        * 注釋 *
00ECF924    02248D34    ;指向待整理路徑
00ECF928    022321D8    ;指向輸出路徑buffer
00ECF92C    000003F1    ;輸出buffer的長度
00ECF930    02248FB0    ;指向prefix,值為 \x5C\x00 ,即unicode ‘\’
00ECF934    02248FB4    ;指向路徑類型,值為 0x1001
00ECF938    00000000    ;WORD Flags保留,值為0

CanonicalizePathName中斷

結(jié)合IDA pro對NetpwPathCanonicalize的流程分析,在地址處將調(diào)用下一級函數(shù)CanonPathName,在此地址設下斷點:

MS08-067漏洞原理及過程的示例分析

運行到此斷點,然后跟蹤函數(shù)CanonPathName,傳入?yún)?shù)如下所示:

MS08-067漏洞原理及過程的示例分析

00F0F8FC    00157570    ;指向prefix,值為\x5C\00,即Unicode"\"
00F0F900    001572F4    ;指向待整理路徑
00F0F904    02132E80    ;指向輸出路徑的buffer
00F0F908    000003F9    ;輸出buffer的長度
00F0F90C    00000000    ;WORD Flag保留字,值為0

從上兩個函數(shù)的參數(shù)傳遞可以看出,函數(shù)CanonPathName進行路徑整理,然后再保存到預先分配的輸出路徑緩沖區(qū)buffer中。

待整理路徑結(jié)構(gòu)

在OD中查看待整理路徑的結(jié)構(gòu),路徑是Unicode字符串,以【\x5C\x00】(Unicode字符“\”)開始,【\x00\x00】結(jié)束,中間包含一些隨機的大小寫字母,較長一段不可顯示的字符是經(jīng)過編碼的Shellcode,其中最關(guān)鍵的是兩個連在一起的父目錄相對路徑【....\】。

MS08-067漏洞原理及過程的示例分析

路徑是一個Unicode字符串,以【\x5C\x00】(Unicode字符 ”\”)開始,到【\x00\x00】結(jié)束,中間包含一些隨機的大小寫字母,較長一段不可顯示的字符是經(jīng)過編碼的Shellcode,其中最關(guān)鍵的部分是兩個連在一起的【\..\..\】,這是表示父目錄的相對路徑。

整個待整理路徑形如:

\******\..\..\***

整理路徑前的預操作

在待整理路徑所在內(nèi)存地址000C0F50處4字節(jié)上設內(nèi)存訪問斷點:

MS08-067漏洞原理及過程的示例分析

按F9運行,會中斷3次,前兩次分別是檢查待整理路徑的第一個字符和調(diào)用wcslen函數(shù),第三次是在調(diào)用wcscat函數(shù)。分析第三次傳入棧中兩個參數(shù):

MS08-067漏洞原理及過程的示例分析

第一個是strDestination,指向一段以【\x5c\x00】開頭的內(nèi)存空間;第二個是strSource,指向上述待整理路徑前兩字節(jié)【\x5c\x00】后的內(nèi)容。

MS08-067漏洞原理及過程的示例分析

程序把待整理路徑全部復制到strDestination,即0x001572F6處。在此4字節(jié)設斷點,類型選擇"Hardware, on access"DWord。

MS08-067漏洞原理及過程的示例分析

復制路徑到緩沖區(qū)

F9繼續(xù)運行,第4次中斷在0x77BD4010 ,內(nèi)存里顯示這里將src的前兩個字符復制到了dest的【\x5C\x00】后面,這是由于這兩個字節(jié)設了斷點的原因:

MS08-067漏洞原理及過程的示例分析

第5次中斷在0x71C#44B1C,位于wcscat函數(shù)內(nèi),內(nèi)存顯示已將src復制到dest,如圖:

MS08-067漏洞原理及過程的示例分析

MS08-067漏洞原理及過程的示例分析

第一次路徑規(guī)范化

按F9運行,中斷多次后停在內(nèi)存0x77bd4d36處,通過棧可知此處屬于wcscpy函數(shù)。此處調(diào)用該函數(shù)進行第一次路徑規(guī)范化。如圖:

MS08-067漏洞原理及過程的示例分析

當前參數(shù)src值為0x00EC6E0,指向【..*】;參數(shù) strDestination 值為0x00ECF4DC,指向temp中的第一個字符【\】。 顯然,這次路徑規(guī)范化即把待整理路徑中第一個字符【\】和第一個【..\】相對路徑之間的內(nèi)容拋棄。

MS08-067漏洞原理及過程的示例分析

而此時wcscpy源地址src在edx寄存器中,指向【..*】;目的地址dest在ecx寄存器中,指向待整理路徑第一個字符【\】,如圖:

MS08-067漏洞原理及過程的示例分析

所以,這次字符串復制操作就是去掉第一個表示父目錄的相對路徑,即待整理路徑temp中的第一個【\】和第一個【..\】之間的內(nèi)容成為無用路徑被拋棄。操作完成后,temp中的路徑字符形如【..*】。

第一次規(guī)范化后,待整理路徑形如:

\..\***

由于還有【..\】,還需要進行一次規(guī)范化,而這第二次規(guī)范化正是玄機所在。

第二次路徑規(guī)范化

由于每次路徑規(guī)范化都會調(diào)用wcscpy函數(shù),接下來刪除0x00ECF4DC的硬件斷點,直接在wcscpy函數(shù)的入口地址0x77BD4D28處下斷點。

MS08-067漏洞原理及過程的示例分析

F9運行后中斷在wcscpy函數(shù)入口0x77BD4D28處,調(diào)用wcscpy函數(shù)傳入的參數(shù):

MS08-067漏洞原理及過程的示例分析

esp            [esp]        * 注釋 *
00ECF4AC    00ECF494    目的地址,指向的內(nèi)存區(qū)域值為\x5c\x00,即【\】
00ECF4B0    00ECF4E2    源地址,指向第二個相對路徑【\..\】的最后一個斜杠

正常情況下,這次規(guī)范化處理會和第一次執(zhí)行同樣的操作,去除第二個相對路徑【..\】,從而完成第二次的路徑規(guī)范化。但這里出現(xiàn)了一個意外的情況,temp的首地址是0x00ECF4DC,而此次字符串復制操作的目的地址dest卻在0x00ECF494,在temp之前,如圖:

MS08-067漏洞原理及過程的示例分析

同時注意到,棧指針ESP值為0x00ECF4A8,該地址指向wcscpy函數(shù)的返回地址0x71C52FD4。ESP到復制目的dest地址0x00ECF494只有0x14字節(jié),于是,函數(shù)wcscpy如果繼續(xù)執(zhí)行,將用源字符串src覆蓋wcscpy函數(shù)的返回地址。

執(zhí)行到retn命令,可以看到返回地址變成了0x0100129E,該地址的指令為:

00100129E        FFD6        call esi

執(zhí)行 call esi(ES=0x00F0F4DE)指令,正好將EIP指向復制盡量的字符串中構(gòu)造好的第8字節(jié)空指令,接著是【\xeb\x62】(jmp 0x62),此jmp指令跳過中間的隨機字符串,指向經(jīng)過編碼的Shellcode,如圖:

MS08-067漏洞原理及過程的示例分析

所以這里是由于內(nèi)存0x00F0F494處的一個【\】(0x5C),使得出現(xiàn)在處理父母了相對路徑【..\】時往前溢出了待處理路徑,從而將字符串覆蓋到函數(shù)wcscpy返回地址的位置,跳轉(zhuǎn)到shellcode造成遠程代碼執(zhí)行。

正如前面所提到的,當【..\】在源字符串開頭的時候,在開始查找時,比較的字符位于緩沖區(qū)之外導致了向前的溢出。

看完上述內(nèi)容,你們掌握MS08-067漏洞原理及過程的示例分析的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

本文題目:MS08-067漏洞原理及過程的示例分析
文章分享:http://aaarwkj.com/article28/jegocp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站品牌網(wǎng)站制作、自適應網(wǎng)站網(wǎng)站設計、手機網(wǎng)站建設、外貿(mào)網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設
国产原创av剧情六区| 日本视频免费一区二区| 99热久久精品免费精品| 色哟哟91精品色哟哟| 日韩免费在线观看av| 国产成人综合久久三区北岛玲| 日韩精品一区二区91| 欧美亚洲综合日韩精品区| 色综合色综合色综合色| 中文字幕成人免费看片| 亚洲精品??一区二区| 免费中文字幕av电影| 亚洲黄色片一区二区三区| 成人在线免费观看视频国产| 久久精品夜夜夜夜夜久久| 久久精品国产亚洲av久| 国产99热这里只有精品| 国产视频专区一区二区| 日本中文字幕在线一区| 区二区三区毛片乱码免费| 给我搜一个一级黄色片| 91麻豆精品在线观看| 亚洲精品日本一区二区| 色欧美一区二区三区在线| 欧美夫妻成人性生活视频| 国产国语激情对白在线| 亚洲在线免费播放视频| 日韩精品少妇一区二区在线看| 在线观看亚洲av日韩av| 最新国产不卡一区二区| 二区三区成人在线观看| 一区二区三区欧美影片| 亚洲第一中文字幕久久| 宫部凉花中文字幕在线| 国产又粗又长又猛又爽视频| 韩国福利短片在线观看| 亚洲精品国产精品乱码不| 日韩av一区二区国产| 亚洲精品中文一区二区三区| 国产91美女黄色在线观看| 亚洲精品一区av在线观看|