




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第八章Python漏洞挖掘和利用8.1漏洞簡(jiǎn)介8.2Python模糊測(cè)試8.3Freefloat漏洞分析8.4Python編寫(xiě)exploit習(xí)題
8.1漏洞簡(jiǎn)介
安全漏洞是在硬件、軟件及協(xié)議的具體實(shí)現(xiàn)或系統(tǒng)安全策略上存在的缺陷,使得攻擊者能夠在未授權(quán)的情況下訪問(wèn)或破壞系統(tǒng)。通常,安全漏洞可以分為軟件編寫(xiě)存在的瑕疵(Bug)、系統(tǒng)配置不當(dāng)、敏感信息泄露、明文數(shù)據(jù)傳輸、邏輯缺陷、數(shù)據(jù)表示漏洞等類型。表8-1給出了目前常見(jiàn)的軟件安全漏洞,涉及Web類、操作系統(tǒng)類、協(xié)議類、口令使用不當(dāng)?shù)榷喾N安全漏洞。
8.2Python模糊測(cè)試
8.2.1模糊測(cè)試簡(jiǎn)介模糊測(cè)試是一種介于完全的手工滲透測(cè)試與完全的自動(dòng)化測(cè)試之間的安全性測(cè)試類型。模糊測(cè)試方法通過(guò)向目標(biāo)軟件或者系統(tǒng)提供非預(yù)期的輸入,監(jiān)視軟件或者系統(tǒng)是否出現(xiàn)異常來(lái)發(fā)現(xiàn)軟件漏洞的。
1.模糊測(cè)試方法
模糊測(cè)試需要往目標(biāo)軟件或者系統(tǒng)輸入的數(shù)據(jù)可以通過(guò)兩種方法來(lái)產(chǎn)生:基于變異的和基于生成的。
(1)基于變異的模糊測(cè)試方法,是指對(duì)已有數(shù)據(jù)樣本應(yīng)用變異技術(shù)來(lái)創(chuàng)建測(cè)試用例的方法。
(2)基于生成的模糊測(cè)試方法,是指通過(guò)對(duì)目標(biāo)協(xié)議或文件格式建模的方法從零開(kāi)始產(chǎn)生測(cè)試用例。
2.模糊測(cè)試的過(guò)程
模糊測(cè)試方法的選擇需要依賴于目標(biāo)應(yīng)用程序、研究者的技能,以及需要測(cè)試的數(shù)據(jù)所采用的格式等多種不同的因素,沒(méi)有一種“絕對(duì)正確”的模糊測(cè)試方法。但不論采用哪種模糊測(cè)試方法,模糊測(cè)試總要經(jīng)歷以下幾個(gè)階段,如圖8-1所示。
圖8-1模糊測(cè)試的階段
(1)識(shí)別目標(biāo)。通常目標(biāo)應(yīng)用程序擁有多個(gè)功能模塊和多種調(diào)用接口,需要詳盡分析模塊接口和外部接口,才能有效選擇模糊測(cè)試工具或技術(shù)。選擇目標(biāo)應(yīng)用程序后,還必須選擇應(yīng)用程序中具有的目標(biāo)文件或庫(kù)。
(2)識(shí)別輸入。幾乎所有可被用戶利用的漏洞都是因?yàn)閼?yīng)用程序接受了用戶的輸入,并且在處理數(shù)據(jù)時(shí)沒(méi)有過(guò)濾非法數(shù)據(jù)或執(zhí)行確認(rèn)例程,因此對(duì)用戶的輸入進(jìn)行模糊測(cè)試非常重要。
(3)生成模糊測(cè)試數(shù)據(jù)。一旦識(shí)別出輸入數(shù)據(jù),就能進(jìn)行模糊測(cè)試了。如何使用預(yù)定的值,如何變異已有的數(shù)據(jù)或動(dòng)態(tài)生成數(shù)據(jù),這些決策將取決于目標(biāo)應(yīng)用程序及其數(shù)據(jù)格式。不管選擇了哪種方法,這個(gè)過(guò)程中都應(yīng)該采用自動(dòng)化測(cè)試方法。
(4)執(zhí)行模糊測(cè)試數(shù)據(jù):與(3)同時(shí)進(jìn)行,執(zhí)行過(guò)程可能包括發(fā)送數(shù)據(jù)包給目標(biāo)應(yīng)用程序,打開(kāi)一個(gè)文件或發(fā)起一個(gè)目標(biāo)進(jìn)程。同樣,這一步也需要引入自動(dòng)化測(cè)試方法。
(5)監(jiān)視異常。在模糊測(cè)試過(guò)程中,對(duì)異常的監(jiān)視至關(guān)重要。監(jiān)視異??梢圆捎枚喾N形式,并且應(yīng)該不依賴目標(biāo)應(yīng)用程序和所選擇的模糊測(cè)試類型。
(6)確定可利用性。一旦安全漏洞被發(fā)現(xiàn),因?qū)徍四繕?biāo)的不同,還可能需要確定該漏洞是否可以進(jìn)一步被利用。這是一個(gè)典型的人工分析過(guò)程,需要具備安全領(lǐng)域的專業(yè)知識(shí),因此這個(gè)過(guò)程可以由其他人員完成,而不是最初執(zhí)行模糊測(cè)試的人員。
3.模糊測(cè)試工具
WebFuzzer:是一個(gè)Web應(yīng)用程序的模糊測(cè)試器,用于檢查遠(yuǎn)程漏洞,如SQL注入、跨站腳本、遠(yuǎn)程代碼執(zhí)行、文件泄露、目錄遍歷、PHP文件包含、shell轉(zhuǎn)義等。
SNMPFuzzer:是針對(duì)網(wǎng)絡(luò)管理協(xié)議的模糊測(cè)試工具,由Perl語(yǔ)言編寫(xiě),擁有全新的協(xié)議測(cè)試用例產(chǎn)生引擎,提供測(cè)試案例和響應(yīng)故障的有效對(duì)應(yīng)方法,以及更多的測(cè)試粒度和更友好的用戶界面。
FTPFuzzer:是一個(gè)簡(jiǎn)單的基于GUI的文件傳輸協(xié)議模糊測(cè)試器,用于測(cè)試FTP服務(wù)器的實(shí)現(xiàn)。它允許用戶指定FTP命令、參數(shù)以及字符串的模式來(lái)進(jìn)行模糊測(cè)試。
Fuzzball2:是TCP和IP協(xié)議的模糊測(cè)試器,它會(huì)向目標(biāo)主機(jī)發(fā)送一串偽造的數(shù)據(jù)包。
8.2.2
FTP服務(wù)模糊測(cè)試
1.
FTP協(xié)議
1)
FTP協(xié)議簡(jiǎn)介
FTP協(xié)議是因特網(wǎng)中使用最廣泛的文件傳輸協(xié)議,它是TCP/IP模型中的應(yīng)用層協(xié)議。FTP協(xié)議工作在面向連接的、可靠的傳輸層協(xié)議(TCP)之上,為數(shù)據(jù)傳輸提供可靠性保證。FTP協(xié)議包括兩個(gè)組成部分:FTP服務(wù)端和FTP客戶端。其中FTP服務(wù)端用來(lái)存儲(chǔ)文件,用戶可以使用FTP客戶端通過(guò)FTP協(xié)議訪問(wèn)位于FTP服務(wù)端上的資源。
FTP協(xié)議在實(shí)現(xiàn)文件傳輸時(shí)會(huì)建立兩條連接:一條連接用于命令控制;另一條連接用于數(shù)據(jù)傳輸。FTP協(xié)議將命令和數(shù)據(jù)分開(kāi)傳送的方法提高了傳輸效率。
默認(rèn)情況下FTP協(xié)議使用TCP端口中的20和21兩個(gè)端口,其中20端口用于傳輸數(shù)據(jù),21端口用于傳輸控制信息。但是,是否使用20端口作為傳輸數(shù)據(jù)的端口,與FTP使用的傳輸模式有關(guān),如果采用主動(dòng)模式,那么數(shù)據(jù)傳輸端口就是20端口;如果采用被動(dòng)模式,則具體使用哪個(gè)端口需要服務(wù)端和客戶端協(xié)商決定。
2)
FTP協(xié)議工作模式
FTP協(xié)議的工作模式有主動(dòng)模式和被動(dòng)模式。主動(dòng)模式下,客戶端隨機(jī)打開(kāi)一個(gè)大于1024的端口N向服務(wù)端的命令端口(21端口)發(fā)起連接,同時(shí)開(kāi)放N+1端口進(jìn)行監(jiān)聽(tīng),并向服務(wù)端發(fā)出“PORTN+1”命令,由服務(wù)端從它自己的數(shù)據(jù)端口(20端口)主動(dòng)連接到客戶端指定的數(shù)據(jù)端口(N+1)。FTP的客戶端只是告訴服務(wù)端自己的端口號(hào),讓服務(wù)端來(lái)連接客戶端指定的端口。對(duì)于客戶端的防火墻來(lái)說(shuō),這是由外到內(nèi)的連接,該連接可能會(huì)被客戶端的防火墻阻塞。
為了解決服務(wù)端主動(dòng)發(fā)起客戶端的連接阻塞問(wèn)題,有了另一種FTP連接方式,即被動(dòng)模式。命令連接和數(shù)據(jù)連接都由客戶端發(fā)起,這樣就解決了從服務(wù)端到客戶端的數(shù)據(jù)端口的連接被防火墻過(guò)濾的問(wèn)題。被動(dòng)模式下,客戶端打開(kāi)兩個(gè)任意的大于1024的本地端口N和N+1,第一個(gè)端口連接服務(wù)端的21端口,提交PASV命令;然后服務(wù)端會(huì)開(kāi)啟一個(gè)任意的端口并返回響應(yīng)的命令給客戶端;客戶端收到命令取得端口號(hào)之后,會(huì)通過(guò)N+1端口連接到服務(wù)端口,接著在兩個(gè)端口之間進(jìn)行數(shù)據(jù)傳輸。
FTP命令主要用于控制連接,命令以NVTASCII碼的形式傳送,要求在每行結(jié)尾都要有一對(duì)回車(chē)換行符(CRLF)。常見(jiàn)的FTP命令如表8-2所示。
FTP服務(wù)端對(duì)命令的響應(yīng)都是采用ASCII形式的3位數(shù)字,響應(yīng)也是以NVTASCII碼形式傳送,要求在每行結(jié)尾加上CRLF對(duì)。常見(jiàn)的FTP響應(yīng)代碼如表8-3所示。
2.
Python模糊測(cè)試FTP服務(wù)端
下面使用Python強(qiáng)大的網(wǎng)絡(luò)分組構(gòu)造庫(kù)Scapy,對(duì)實(shí)際的FTP服務(wù)端軟件FreefloatServer進(jìn)行模糊測(cè)試以發(fā)現(xiàn)安全漏洞。
本次實(shí)驗(yàn)環(huán)境的相關(guān)信息如下:
(1)客戶端:Kali系統(tǒng),IP地址為38。
(2)服務(wù)端:Windows7系統(tǒng),IP地址為39。
由于FTP協(xié)議是基于面向連接的、可靠的傳輸層TCP協(xié)議,因此需要首先建立TCP三次握手才能建立一個(gè)有效的文件傳輸連接。
三次握手的異常RST包如圖8-2所示。
圖8-2三次握手的異常RST包
發(fā)現(xiàn)服務(wù)端收不到來(lái)自客戶端的ACK確認(rèn)包,反而收到的是客戶端發(fā)送給服務(wù)端的連接復(fù)位分組RESET。這主要是因?yàn)镵ali客戶端的底層網(wǎng)絡(luò)系統(tǒng)在收到服務(wù)端返回的第二次握手包ACK?+?SYN以后,檢測(cè)到系統(tǒng)本身沒(méi)有發(fā)送過(guò)任何的SYN握手包,所以重置了這個(gè)連接。此時(shí)需要配置防火墻的iptables規(guī)則將發(fā)送給服務(wù)端的RST包攔下。
在Kali終端輸入:
iptables-AOUTPUT-ptcp–tcp-flagsRSTRST-jDROP
重新運(yùn)行腳本,則三次握手成功建立了,如圖8-3所示。
圖8-3三次握手成功
不斷增加USER命令的參數(shù)長(zhǎng)度進(jìn)行模糊測(cè)試,最終發(fā)現(xiàn)當(dāng)輸入約250個(gè)字節(jié)時(shí),F(xiàn)reefloatServer服務(wù)端崩潰,如圖8-4所示。
圖8-4
FreefloatServer服務(wù)軟件出現(xiàn)異常
此時(shí)用ImmunityDebugger進(jìn)行調(diào)試,發(fā)現(xiàn)EIP寄存器已經(jīng)被A字符覆蓋,說(shuō)明FreefloatServer在處理USER命令時(shí)發(fā)生了棧溢出,如圖8-5所示,模糊測(cè)試成功!
圖8-5檢查EIP寄存器值
8.3Freefloat漏洞分析
分析棧溢出漏洞的三種方法:關(guān)鍵函數(shù)、敏感字符串和IDAPython方法。限于篇幅僅詳細(xì)介紹第一種方法,第二種和第三種方法請(qǐng)讀者自行驗(yàn)證。
8.3.1關(guān)鍵函數(shù)方法
漏洞產(chǎn)生的原因是服務(wù)端接收了用戶發(fā)送的非法用戶名,并把它放進(jìn)棧中覆蓋(破壞)了棧中原來(lái)的一些數(shù)據(jù)。我們知道,在套接字(Socket)網(wǎng)絡(luò)編程中,recv()函數(shù)用于把接收到的數(shù)據(jù)復(fù)制到緩沖區(qū)中,那么異常一定是發(fā)生在recv()函數(shù)執(zhí)行之后。因此可以對(duì)recv()函數(shù)進(jìn)行跟蹤,檢查后續(xù)執(zhí)行的函數(shù)調(diào)用、對(duì)數(shù)據(jù)的處理操作等。
下面用反匯編工具IDA對(duì)FreefloatServer進(jìn)行分析,具體步驟如下:
(1)在IDA的“Functionname”窗口里搜索recv(),找到后雙擊就可以進(jìn)入recv()的代碼,如圖8-6所示。
(2)光標(biāo)移到想分析的代碼處按下F5鍵,將匯編代碼轉(zhuǎn)換為偽代碼,按Esc鍵返回上一步,如圖8-7所示。
圖8-7偽代碼
(3)在函數(shù)處單擊右鍵,選擇Xrefsto,就可以看到直接和間接調(diào)用它的函數(shù)。函數(shù)調(diào)用流程圖如圖8-8所示。
圖8-8函數(shù)調(diào)用流程圖
(4)雙擊CODEXREF后的函數(shù)就可以轉(zhuǎn)到調(diào)用它的函數(shù)處,可見(jiàn)有兩個(gè)函數(shù)調(diào)用了recv(
);再雙擊圖8-8中的recr()函數(shù)轉(zhuǎn)到sub_401DE0(
)函數(shù),具體內(nèi)容如圖8-9所示。
圖8-9401DE0函數(shù)
圖8-10所示是401DE0(
)的偽代碼,v2是recv(
)函數(shù)的返回值。
圖8-10
recv()函數(shù)偽代碼
根據(jù)微軟API開(kāi)發(fā)手冊(cè)對(duì)recv()函數(shù)的原型說(shuō)明,該函數(shù)總共有4個(gè)參數(shù),形式如下:
intrecv(sockets,char*buf,intlen,intflags)
①參數(shù)說(shuō)明:
第一個(gè)參數(shù)sockets指定接收套接字描述符。
第二個(gè)參數(shù)char*buf指向一個(gè)緩沖區(qū),該緩沖區(qū)用來(lái)存放recv()函數(shù)接收到的數(shù)據(jù)。
第三個(gè)參數(shù)intlen指明buf的長(zhǎng)度。
第四個(gè)參數(shù)intflags指定調(diào)用方式,一般為0。
②返回值:若無(wú)錯(cuò)誤發(fā)生,recv(
)返回讀入的字節(jié)數(shù)。如果連接已中止,那么返回0。如果發(fā)送錯(cuò)誤,那么返回?-1。
③分析:recv(
)的返回值賦給了v2,v2里存儲(chǔ)的是此次復(fù)制到緩沖區(qū)的字節(jié)數(shù)。在v2不為0同時(shí)也不為?-1(成功把數(shù)據(jù)復(fù)制到緩沖區(qū))的情況下,把(v1+24)這個(gè)地址的數(shù)x變?yōu)?x+v2),所以(v1+24)存儲(chǔ)的應(yīng)該是緩沖區(qū)已經(jīng)被占用的字節(jié)數(shù),它的初始值是0。
根據(jù)recv(
)第二個(gè)參數(shù)是指向緩沖區(qū)首地址的指針可以知道,(v1+20)處存儲(chǔ)的就是緩沖區(qū)的首地址,每次通過(guò)首地址*(_DWORD*)(this+20)加偏移地址*(_DWORD*)(this+24)尋找下一個(gè)可用的緩沖區(qū)首地址,這樣就可以多次使用這1024個(gè)字節(jié)的緩沖區(qū),直到緩沖區(qū)全部放滿接收的數(shù)據(jù)。若recv(
)成功復(fù)制,則函數(shù)401DE0(
)返回1;否則函數(shù)返回0。那么它把返回值交給了誰(shuí)呢?當(dāng)然是調(diào)用它的函數(shù)了。
(5)利用交叉引用找到并調(diào)用401DE0()函數(shù)中StartAddress()。正常情況下,401DE0()函數(shù)會(huì)返回1,取非后為0,那么接著就要調(diào)用4020E0()函數(shù),如圖8-11所示。
圖8-11
recv()函數(shù)執(zhí)行后的下一步函數(shù)調(diào)用
圖8-12所示是4020E0(
)函數(shù)的部分代碼,它對(duì)數(shù)據(jù)進(jìn)行了一些處理后調(diào)用了402190()函數(shù)。
圖8-124020E0()函數(shù)偽代碼
(6)進(jìn)入402190(
)函數(shù),然后驚喜地發(fā)現(xiàn)里面的“USER”字符串。strncmp(
)函數(shù)用來(lái)比較v2和USER字符串的前5個(gè)字符。如果這兩個(gè)字符相等的話,就返回0。如果處理的是USER命令的話,就會(huì)進(jìn)入下面的流程。具體內(nèi)容如圖8-13所示。
圖8-13402190()函數(shù)偽代碼
(7)進(jìn)入402DE0(
)函數(shù),發(fā)現(xiàn)IDA提示v17在棧里面,距離棧底FCh個(gè)字節(jié)長(zhǎng)度,strcpy(
)函數(shù)把a(bǔ)3指向的數(shù)據(jù)復(fù)制到棧中且以v17為首地址,如果a3指向的數(shù)據(jù)很多(Passwordrequiredfor(22個(gè))+數(shù)據(jù)),大于FCh(252),就可能造成棧溢出。也就是說(shuō),當(dāng)用戶輸入的USER后面的數(shù)據(jù)多于230時(shí),就會(huì)覆蓋返回地址。
復(fù)制拷貝操作如圖8-14所示。
圖8-14復(fù)制拷貝操作
這樣就可以發(fā)現(xiàn)原來(lái)FreefloatServer處理USER命令時(shí),用到了strcpy(
)函數(shù),且當(dāng)用戶發(fā)送的USER后面的數(shù)據(jù)大于230個(gè)字符時(shí),就會(huì)覆蓋返回地址,該函數(shù)執(zhí)行完后就會(huì)出錯(cuò)。
根據(jù)上述分析可以畫(huà)出整個(gè)USER命令的處理流程圖,如圖8-15所示。
圖8-15函數(shù)處理USER命令流程圖
8.3.2敏感字符串方法
打開(kāi)字符串窗口可以發(fā)現(xiàn)一些關(guān)鍵的字符串,從里面找到了字符串“USER”,就可以發(fā)現(xiàn)sub_402190(
)函數(shù)引用了“USER”;然后可以把它轉(zhuǎn)換成偽代碼進(jìn)行分析;最后也會(huì)找到關(guān)鍵函數(shù)sub_402DE0(
)。
8.3.3
IDAPython方法
使用IDAPython腳本,將IDA置成調(diào)試狀態(tài),加載一個(gè)腳本。這個(gè)腳本是在程序的每一個(gè)函數(shù)中都設(shè)置斷點(diǎn),捕捉每一個(gè)函數(shù),并把它的信息回顯出來(lái)。運(yùn)行程序之后,能夠得到程序現(xiàn)在正在執(zhí)行的是哪個(gè)函數(shù),此時(shí)發(fā)送大量數(shù)據(jù)對(duì)服務(wù)器進(jìn)行模糊測(cè)試,如果程序停下來(lái)了,那么就可以從停下的那個(gè)位置自下而上地找出安全漏洞所出現(xiàn)的函數(shù)。程序運(yùn)行出現(xiàn)異常后的截圖如圖8-16所示。
圖8-16程序異常后的截圖
8.3.4
Freefloat漏洞驗(yàn)證
經(jīng)過(guò)上述的分析已經(jīng)知道,當(dāng)向Freefloat服務(wù)端發(fā)送USER后面的數(shù)據(jù)大于230個(gè)字符時(shí),堆棧中的敏感數(shù)據(jù)就會(huì)被覆蓋。下面用OD調(diào)試器對(duì)此作一驗(yàn)證。
把程序加載到OD,在00402DE0下斷點(diǎn),將程序運(yùn)行起來(lái)并向服務(wù)端發(fā)送“USER+230(最大能容納的數(shù)據(jù)數(shù)量)+4(覆蓋返回地址的數(shù)據(jù))”,程序會(huì)停在00402DE0,查看堆棧窗口就可以發(fā)現(xiàn)返回地址在00BBFC20里(返回到FTPServe.004028F2,來(lái)自FTPServe.00402DE0)。
返回地址入棧如圖8-17所示。8-17返回地址入棧
接著,從00402DE0開(kāi)始一步一步地單步執(zhí)行。發(fā)現(xiàn)它在00402E5F處執(zhí)行了REPMOVSDWORDPTRES:[EDI],DWORDPTRDS:[ESI],然后返回地址就被覆蓋了,如圖8-18所示。
8-18返回地址被覆蓋
其實(shí)這些數(shù)據(jù)就是處理后要發(fā)送給客戶端的數(shù)據(jù),在數(shù)據(jù)的后面還要加上“.\r\n+Null”,在內(nèi)存里就用2E0D0A00(一般在數(shù)據(jù)末尾都要加00,便于計(jì)算字符串長(zhǎng)度,通常長(zhǎng)度值賦給寄存器ECX)表示,這點(diǎn)會(huì)在軟件保護(hù)里用到。所以最后數(shù)據(jù)處理完以后如圖8-19所示。
圖8-19字符串結(jié)束符
這些數(shù)據(jù)會(huì)被作為一個(gè)參數(shù)傳入send(
)函數(shù)中,然后經(jīng)過(guò)協(xié)議最終傳送給用戶。傳送結(jié)束后函數(shù)返回00402DE0(
),00402DE0(
)再想返回FTPServe.004028F2時(shí)就會(huì)出現(xiàn)問(wèn)題,因?yàn)榉祷氐刂芬呀?jīng)被覆蓋,0x41414141不可讀,程序就會(huì)停止運(yùn)行。返回地址被修改導(dǎo)致無(wú)效EIP,如圖8-20所示。
圖8-20返回地址被修改導(dǎo)致無(wú)效EIP
8.4Python編寫(xiě)exploit
1.漏洞利用程序一個(gè)漏洞利用程序就是一段通過(guò)觸發(fā)一個(gè)漏洞進(jìn)而控制目標(biāo)系統(tǒng)的代碼。攻擊代碼通常會(huì)釋放攻擊載荷,里面包含了攻擊者想要執(zhí)行的代碼。exploits利用代碼可以在本地也可以向遠(yuǎn)程進(jìn)行攻擊。
2.實(shí)驗(yàn)原理
(1)
FreefloatFTP。本實(shí)驗(yàn)利用的是FreefloatFTP在對(duì)USER命令的解析處理過(guò)程中存在緩沖區(qū)溢出漏洞,攻擊者可利用此漏洞在受影響的應(yīng)用程序上下文內(nèi)執(zhí)行任意代碼。
(2)緩沖區(qū)溢出。緩沖區(qū)溢出是指向程序輸入緩沖區(qū)中寫(xiě)入超過(guò)緩沖區(qū)所能保存的最大數(shù)據(jù)量的數(shù)據(jù),從而破壞程序的運(yùn)行,甚至獲取系統(tǒng)的控制權(quán)。它是一種非常普遍和非常危險(xiǎn)的漏洞,在各種操作系統(tǒng)、應(yīng)用軟件中廣泛存在。
緩沖區(qū)溢出的原理如圖8-21所示。
圖8-21緩沖區(qū)溢出的原理圖
3.實(shí)驗(yàn)環(huán)境
本次實(shí)驗(yàn)?zāi)繕?biāo)機(jī)器為Windows7、FreefloatFTP、ImmunityDebugger,目標(biāo)機(jī)器IP地址為29。
攻擊機(jī)器為Kali2、Python、Telnet、Netcat,攻擊機(jī)器IP地址為38。
首先在目標(biāo)機(jī)器上運(yùn)行FTP服務(wù)端,并加載到ImmunityDebugger中,在攻擊機(jī)器上通過(guò)Telnet連接,確保攻擊機(jī)器能夠訪問(wèn)它。網(wǎng)絡(luò)連接如圖8-22所示。
圖8-22網(wǎng)絡(luò)連接
4.創(chuàng)建exploit
為了利用上述漏洞,首先利用Metasploit創(chuàng)建exploit,然后定位有效的注入點(diǎn)來(lái)插入exploit進(jìn)行實(shí)踐即可。但是在創(chuàng)建exploit之前,需要找出“壞”字符?!皦摹弊址褪菍?dǎo)致shellcode不能正常復(fù)制到內(nèi)存的字符,它們很可能導(dǎo)致緩沖區(qū)溢出失敗,因此需要將其進(jìn)行移除。
首先在目標(biāo)機(jī)器中打開(kāi)FreefloatServer,然后將其加載到ImmunityDebugger中,并點(diǎn)擊運(yùn)行。其次在攻擊機(jī)器中運(yùn)行上述腳本,觀察ImmunityDebugger中的變化。堆棧布局如圖8-23所示。
圖8-23堆棧布局(1)
從ImmunityDebugger中可以發(fā)現(xiàn),EIP中的內(nèi)容是0x42424242,0x42是ASCII表示的字符B,說(shuō)明當(dāng)向該服務(wù)端發(fā)送多于230個(gè)字符后,EIP就指向了緊跟其后的地址。從數(shù)據(jù)窗口中可以發(fā)現(xiàn),ESP指向的地址0x0223FC00與EIP
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 抹灰班勞務(wù)承包合同
- 房屋多人股權(quán)轉(zhuǎn)讓協(xié)議
- 自建房樓板加固施工方案
- 《高品質(zhì)住宅建設(shè)標(biāo)準(zhǔn)》編制說(shuō)明
- 五系專車(chē)專用后杠施工方案
- 鋁合金桁架腳手架施工方案
- 對(duì)開(kāi)原地區(qū)玉米螟發(fā)生原因及綠色防控對(duì)策的研究分析
- 湖北省宜昌市興山縣一中2024-2025學(xué)年高三下學(xué)期入學(xué)檢測(cè)語(yǔ)文試題(原卷版+解析版)
- 碳排放交易與碳市場(chǎng)機(jī)制的策略及實(shí)施路徑
- 道路施工導(dǎo)改及施工方案
- 《實(shí)數(shù)》單元作業(yè)設(shè)計(jì)
- (word完整版)教師個(gè)人簡(jiǎn)歷模板
- 專題11 以小見(jiàn)大-【幫作文】初中語(yǔ)文之從課文中學(xué)習(xí)寫(xiě)作 課件(共25張PPT)
- 天溯EMS能源管理系統(tǒng)V1.3安裝配置手冊(cè)
- 互聯(lián)網(wǎng)公司勞動(dòng)合同
- 二級(jí)建造師之二建建設(shè)工程施工管理強(qiáng)化訓(xùn)練打印大全
- 吉美版四年級(jí)綜合實(shí)踐活動(dòng)下冊(cè)全冊(cè)表格簡(jiǎn)約式教案教學(xué)設(shè)計(jì)
- 2023河南對(duì)口高考計(jì)算機(jī)類基礎(chǔ)課試題
- 幼兒園大班幼小銜接主題活動(dòng)策劃《我們要上學(xué)啦》教育PPT模板
- 四川省2022年普通高等學(xué)校高職教育單獨(dú)招生文化考試(普高類)數(shù)學(xué)試題(原卷版)
評(píng)論
0/150
提交評(píng)論