欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

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

0x01 MS08-067漏洞原理

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

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

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

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

路徑處理流程

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

路徑處理流程:

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

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

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

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

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

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

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

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

如圖,第一次檢查時(shí)去掉了第一個(gè)相對(duì)路徑并復(fù)制到緩沖區(qū)

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

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

緩沖區(qū)溢出

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

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

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

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

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

0x02 漏洞還原分析

實(shí)驗(yàn)環(huán)境

靶機(jī):Windows2003 SP0 EN

漏洞組件:netapi32.dll

工具:IDA Pro、OllyDbg

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

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

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

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

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

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

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

DWORD NetpwPathCanonicalize(
    LPWSTR PathName, //需要標(biāo)準(zhǔn)化的路徑
    LPWSTR Outbuf, //存儲(chǔ)標(biāo)準(zhǔn)化后的路徑的Buffer
    DWORD OutbufLen, //Buffer長(zhǎng)度
    LPWSTR Prefix, //可選參數(shù),當(dāng)PathName是相對(duì)路徑時(shí)有用
    LPDWORD PathType, //存儲(chǔ)路徑類型
    DWORD Flags // 保留,為0
 )

動(dòng)態(tài)調(diào)試

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

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

打開OllyDbg,點(diǎn)擊file->attach,附著到svchost.exe進(jìn)程上:

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

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

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

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

回到CPU指令窗口運(yùn)行程序,然后攻擊機(jī)Metasploit加載ms08_067_netapi模塊并exploit:

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

NetpwPathCanonicalize中斷

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

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

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

CanonicalizePathName中斷

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

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

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

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

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

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

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

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

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

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

整個(gè)待整理路徑形如:

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

整理路徑前的預(yù)操作

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

按F9運(yùn)行,中斷多次后停在內(nèi)存0x77bd4d36處,通過??芍颂帉儆趙cscpy函數(shù)。此處調(diào)用該函數(shù)進(jìn)行第一次路徑規(guī)范化。如圖:

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

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

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

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

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

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

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

\..\***

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

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

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

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

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

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

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

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

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

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

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

00100129E        FFD6        call esi

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

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

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

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

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

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

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

廣告

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

手機(jī)網(wǎng)站建設(shè)
亚洲熟女乱色一区二区三区| 国产一区二区三区丝袜不卡| 老司机精品福利视频在线播放| 日本妇女高清一区二区三区| 国产精品第一香蕉视频| 国产一区二区三区口爆在线| 中文字幕人妻av不卡| 精品熟女少妇一区二区三区| 韩国日本欧美国产三级| 成人日韩视频中文字幕| 国产日本欧美特黄在线观看| 欧洲自拍偷拍一区二区| 精品人妻一区二区三区四区久久| 亚洲一区二区三区三州| 视频一区二区 国产精品| 特黄大片性高水多欧美一级| 日本午夜福利视频免费观看| 日本免费熟女一区二区三区| 一个人的久久精彩视频| 夜夜躁狠狠躁日日躁视频黑人| 妻子的新妈妈中文字幕| 国内精品偷拍视频久久| 亚洲国产精品国自产拍社区| 在线免费视频你懂的观看| 日本久久精品在线观看| 开心五月激情综合婷婷色| 中文字幕禁断介一区二区| 国语久精品在视频在线观看| 99一级特黄色性生活片| 国产午夜在线精品视频| 日本不卡一本二本三区| a久久天堂国产毛片精品| 国产av熟女一区二区三区四区| av在线免费观看一区二区三区 | 九九九热在线免费视频| 东京热一二三区在线免| 精品欧美一区二区三久久| 中文字幕高清不卡一区| 日韩一区二区三区久久| 日韩欧美综合在线播放| 国产中文字幕一二三区|