上傳漏洞-ASP 中 chr(0) 文件上傳漏洞原理及解決方法
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
我們?cè)谟?ASP 開(kāi)發(fā)文件上傳功能的時(shí)候,為了防止用戶(hù)上傳木馬程序,常常會(huì)限制一些文件的上傳,常用的方法是判斷一下上傳文件的擴(kuò)展名是否符合規(guī)定,可以用 right 字符串函數(shù)取出上傳文件的文件名的后四位,這樣很容易就能判斷了,但是這里面有一個(gè)漏洞,非常危險(xiǎn),就是 chr(0) 漏洞,詳情請(qǐng)接著往下看。 一、首先解釋下什么是 chr(0)? 在 ASP 中可以用 chr() 函數(shù)調(diào)用 ASCII 碼,其中 chr(0) 表示調(diào)用的是一個(gè)結(jié)束字符,簡(jiǎn)單的說(shuō)當(dāng)一個(gè)字符串中包含 chr(0) 字符時(shí),只能輸出 chr(0) 前面的字符,chr(0) 后面的字符將不被輸出。舉例如說(shuō)明: <%response.write "HTMer.com"&chr(0)&" 歡迎您 "%> 以上代碼你在 IIS 下運(yùn)行下看看,是不是只會(huì)輸出“HTMer.com”呢?后面的“歡迎您”就沒(méi)有了,因?yàn)樽x到 chr(0) 時(shí)就認(rèn)為該語(yǔ)句結(jié)束了。 二、chr(0) 漏洞上傳原理: 假設(shè)我在 ASP 程序中已經(jīng)設(shè)置只能上傳 jpg 文件,這里看我怎么利用 chr(0) 漏洞上傳 ASP 木馬的: 這里假設(shè)有一個(gè) ASP 木馬文件為 htmer.asp,我把它改名為 htmer.asp .jpg,大家有沒(méi)有看到中間有一個(gè)空格?我們?cè)讷@取該文件名時(shí),這個(gè)空格就被認(rèn)為是 chr(0),當(dāng)用 right("htmer.asp .jpg",4) 看的時(shí)候,確實(shí)是 .jpg,但是當(dāng)實(shí)際讀取 htmer.asp .jpg,并生成文件的時(shí)候,系統(tǒng)讀到 chr(0) 就以為結(jié)束了,所以后面的 .jpg 就輸出不來(lái)了,上傳后的文件名被自動(dòng)生成了 htmer.asp,這意味著什么?我想你應(yīng)該知道了吧。(由于顯示的原因,文中“.jpg”前面的空格實(shí)際上代表 chr(0)。千一網(wǎng)絡(luò)編輯注) 三、解決 chr(0) 漏洞的方法 解決辦法是檢查上傳的文件名里面有沒(méi)有 chr(0),在 ASP 中直接用 replace 函數(shù)替換掉 chr(0) 字符即可。 (chr(0) 漏洞是在完全按客戶(hù)端的文件名來(lái)保存時(shí)才存在,如果文件標(biāo)識(shí)符是系統(tǒng)決定的,而文件擴(kuò)展名由客戶(hù)端文件名來(lái)提取,則不會(huì)出現(xiàn)安全問(wèn)題。實(shí)際上,我們應(yīng)用中不可能完全按照客戶(hù)端文件名來(lái)保存,因?yàn)檫@本身就是一種漏洞,因?yàn)檫@樣客戶(hù)端就可以上傳文件來(lái)覆蓋已經(jīng)存在的文件了。) 該文章在 2011/1/31 1:38:36 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |