Web安全性測(cè)試系列(三)文件上傳漏洞核心原理詳解
接著上兩篇文章的相關(guān)內(nèi)容,今天主要與大家分享關(guān)于Web安全性測(cè)試系列的文件上傳漏洞的相關(guān)知識(shí)點(diǎn)分享。

編輯搜圖
請(qǐng)點(diǎn)擊輸入圖片描述(最多18字)
上傳文件的功能我們?cè)趯?shí)施功能或者自動(dòng)化測(cè)試時(shí)都有用過(guò),不同的文件類型受文件類型或者大小的限制需要對(duì)文件類型進(jìn)行約束。
下面我們通過(guò)一個(gè)案例來(lái)與大家分享文件上傳的漏洞,看文件上傳漏洞的危害有多大。
一、打開(kāi)一個(gè)項(xiàng)目存在文件上傳功能的表單界面。
二、打開(kāi)相關(guān)有文件上傳功能的業(yè)務(wù)模塊進(jìn)行操作。
例如:缺陷管理工具中就存在附件等相關(guān)文件上傳模塊的功能點(diǎn)。
平時(shí)我們?cè)谔峤蝗毕輹r(shí),可以將缺陷圖片的文件等相關(guān)附件進(jìn)行上傳到服務(wù)器中去,缺陷管理工具提供了這些這樣的功能操作項(xiàng)。
我們首先編寫(xiě)一個(gè)缺陷,上傳缺陷的圖,提交缺陷成功上傳。
如果我們不知道服務(wù)器允許我們上傳什么類型的文件內(nèi)容時(shí),
我們現(xiàn)在來(lái)做一個(gè)實(shí)驗(yàn),上傳一個(gè)java文件的時(shí)候,意味著服務(wù)器就在執(zhí)行我的java文件的代碼,上傳文件一定存在文件的
路徑,打開(kāi)這個(gè)文件路徑就能瀏覽文件的內(nèi)容。
如果我在java文件內(nèi)部寫(xiě)一些代碼讓系統(tǒng)去操作,打開(kāi)文件進(jìn)行瀏覽,我們就發(fā)了解服務(wù)器文件中的所有信息,服務(wù)器就可以被我們控制。
接下來(lái)我們將java文件的代碼進(jìn)行修改,讓文件能夠允許用戶進(jìn)行信息的輸入,讓文件java文件通過(guò)URL的GET方法能夠幫助我們執(zhí)行系統(tǒng)命令,如果我們獲取的是一個(gè)post的方法的命令,我們同樣將方法進(jìn)行修改,再將文件上傳到服務(wù)器中去。
這時(shí)候系統(tǒng)會(huì)報(bào)名,我們將URL地址進(jìn)行修改,在參數(shù)后面添加一個(gè)cmd的運(yùn)行參數(shù)命令進(jìn)行操作服務(wù)器,這時(shí)候可以對(duì)服務(wù)器的文件內(nèi)容進(jìn)行操作,能夠獲取到當(dāng)前java文件代碼的目錄所在位置以及目錄中的相關(guān)文件類型,從而達(dá)到攻擊系統(tǒng)的目的。
用戶可以通過(guò)獲取到的java文件代碼來(lái)遠(yuǎn)程登錄操作服務(wù)器,從而達(dá)到文件上傳漏洞攻擊的目的,分析服務(wù)器是否有對(duì)用戶的操作內(nèi)容進(jìn)行限制,達(dá)到模擬攻擊文件上傳的安全性漏洞測(cè)試。
分析原因:優(yōu)先我們打開(kāi)服務(wù)器的用戶管理功能,查看當(dāng)前系統(tǒng)的用戶個(gè)數(shù)是3個(gè),現(xiàn)在通過(guò)java文件代碼調(diào)用一個(gè)命令向服務(wù)器用戶管理中添加一個(gè)用戶與密碼,再次打開(kāi)服務(wù)器的用戶管理界面,發(fā)現(xiàn)服務(wù)器新增了一個(gè)用戶。
當(dāng)我們完成新建用戶的操作后,將用戶進(jìn)行刪除,不要讓對(duì)方發(fā)現(xiàn)我們攻擊了對(duì)方的服務(wù)器。
除了可以對(duì)服務(wù)器進(jìn)行新增用戶,我們還可以對(duì)服務(wù)器中的文件進(jìn)行增、刪、改、查來(lái)操作系統(tǒng)內(nèi)容,通過(guò)這種方式就能對(duì)系統(tǒng)的主頁(yè)進(jìn)行非法操作,一般的主頁(yè)文件名稱都是以文件名.index.html結(jié)尾。
當(dāng)然我們也可以對(duì)文件插入木馬來(lái)達(dá)到攻擊服務(wù)器的目的,這其實(shí)就是文件上傳漏洞的安全性bug導(dǎo)致服務(wù)器被用戶攻擊。
如果程序員在編寫(xiě)代碼的過(guò)程中無(wú)意中存放了一個(gè)木馬,項(xiàng)目組成員并沒(méi)有對(duì)代碼進(jìn)行嚴(yán)格的評(píng)審與審查,系統(tǒng)就會(huì)存在安全性漏洞,這其實(shí)就是安全性測(cè)試文件上傳的漏洞。
如果避免這些安全性問(wèn)題呢?
一、對(duì)文件上傳的類型進(jìn)行過(guò)濾
第一種方法:通過(guò)后綴名進(jìn)行過(guò)濾,這種方法簡(jiǎn)單但不是安全,最容易出問(wèn)題的一種方式。
文件后綴名其實(shí)只是一種標(biāo)識(shí),例如:test.txt,kitty.mp3,test.bak.
用戶如果僅僅依靠文件后綴名來(lái)判斷文件的類型,這是存在安全隱患的,因?yàn)橛脩艨梢詫?duì)文件后綴名進(jìn)行修改。
第二種方法:通過(guò)二進(jìn)制的方法來(lái)判斷文件的類型
例如:圖片、文件名.rar等相關(guān)文件、文件名.pdf,文件名.docx等都是二進(jìn)制文件,可以通過(guò)文件的頭和尾來(lái)獲得文件的類型,這些方法的實(shí)施相對(duì)難度較大些,但同樣可以達(dá)到安全性bug漏洞的測(cè)試目的。
第三種方法可以通過(guò)修改服務(wù)器的核心參數(shù)禁止腳本引擎運(yùn)行服務(wù)器的系統(tǒng)命令,用戶在客戶端URL地址欄無(wú)法通過(guò)參數(shù)命令的方式來(lái)攻擊系統(tǒng),這樣也能保證系統(tǒng)的安全性。
綜上所述:通過(guò)以上內(nèi)容的詳細(xì)講解,相信大家對(duì)文件上傳漏洞的整個(gè)過(guò)程有了一個(gè)清晰的了解,同樣希望大家在實(shí)施安全性測(cè)試的過(guò)程中能夠借鑒或者引用以上方法來(lái)測(cè)試系統(tǒng)的漏洞,確保系統(tǒng)的安全性。