




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Web攻防系列教程之 文件上傳攻防解析文件上傳是WEB應(yīng)用很常見的一種功能,本身是一項(xiàng)正常的業(yè)務(wù)需求,不存在什么問題。但如果在上傳時(shí)沒有對(duì)文件進(jìn)行正確處理,則很可能會(huì)發(fā)生安全問題。本文將對(duì)文件上傳的檢測(cè)方式以及如何繞過相應(yīng)檢測(cè)方式進(jìn)行詳細(xì)的分析,并提供針了對(duì)文件上傳攻擊的安全防護(hù)方法。 文件上傳攻擊是指攻擊者利用WEB應(yīng)用對(duì)上傳文件過濾不嚴(yán),導(dǎo)致可以上傳應(yīng)用程序定義類型范圍之外的文件到Web服務(wù)器。比如可以上傳一個(gè)網(wǎng)頁木馬,如果存放上傳文件的目錄剛好有執(zhí)行腳本的權(quán)限,那么攻擊者就可以直接得到一個(gè)WebShell。文件上傳攻擊的原理 由于服務(wù)器端沒有對(duì)用戶上傳的文件進(jìn)行正確的處理,導(dǎo)致攻擊者可以向某個(gè)可通過 Web 訪問的目錄上傳惡意文件,并且該文件可以被Web服務(wù)器解析執(zhí)行。攻擊者要想成功實(shí)施文件上傳攻擊,必須要滿足以下三個(gè)條件:1.可以上傳任意腳本文件,且上傳的文件能夠被Web服務(wù)器解析執(zhí)行,具體來說就是存放上傳文件的目錄要有執(zhí)行腳本的權(quán)限。2.用戶能夠通過Web訪問這個(gè)文件。如果文件上傳后,不能通過Web訪問,那么也不能成功實(shí)施攻擊。 3.要知道文件上傳到服務(wù)器后的存放路徑和文件名稱,因?yàn)樵S多Web應(yīng)用都會(huì)修改上傳文件的文件名稱,那么這時(shí)就需要結(jié)合其他漏洞去獲取到這些信息。如果不知道上傳文件的存放路徑和文件名稱,即使你上傳了也無法訪問。主流文件上傳檢測(cè)方式概述主流的文件上傳檢測(cè)方式有以下五種:1.客戶端javascript檢測(cè)客戶端檢測(cè)通常在上傳頁面里含有專門檢測(cè)文件上傳的javascript代碼,在文件被上傳之前進(jìn)行檢測(cè),最常見的就是檢測(cè)上傳文件的文件類型和大小是否合法。 2.服務(wù)端MIME類型檢測(cè)這類檢測(cè)方法通過檢查http包的Content-Type字段中的值來判斷上傳文件是否合法。 3.服務(wù)端文件擴(kuò)展名檢測(cè)這類檢測(cè)方法通過在服務(wù)端檢測(cè)上傳文件的擴(kuò)展名來判斷文件是否合法。 4.服務(wù)端目錄路徑檢測(cè)這類檢測(cè)一般通過檢測(cè)路徑是否合法來判斷。 5.服務(wù)端文件內(nèi)容檢測(cè)這類檢測(cè)方法相當(dāng)對(duì)上面四種檢測(cè)方法來說是最為嚴(yán)格的一種。它通過檢測(cè)文件內(nèi)容來判斷上傳文件是否合法。這里,對(duì)文件內(nèi)容的檢測(cè)主要有兩種方法。 A.通過檢測(cè)上傳文件的文件頭來判斷。通常情況下,通過判斷前10個(gè)字節(jié),基本就能判斷出一個(gè)文件的真實(shí)類型。B.文件加載檢測(cè),一般是調(diào)用API或函數(shù)對(duì)文件進(jìn)行加載測(cè)試。常見的是圖像渲染測(cè)試,再嚴(yán)格點(diǎn)的甚至是進(jìn)行二次渲染。 如何繞過文件上傳檢測(cè) 上面我們分析了主流的文件上傳檢測(cè)方式,下面我們就來看下如何繞過上面提到的文件上傳檢測(cè)方式,本文只討論如何繞過前三種檢測(cè)方式。 1.繞過客戶端javascript檢測(cè)這種檢測(cè)方法是最不安全的,也是最容易被攻擊者繞過的。Web應(yīng)用不應(yīng)只采用這一種手段檢測(cè)上傳文件,但可以作為一種輔助手段。因?yàn)椴捎每蛻舳薺avascript檢測(cè)可以增強(qiáng)應(yīng)用對(duì)用戶的友好度。由于javascript檢測(cè)是在客戶端實(shí)現(xiàn)的,所以我們完全能夠控制它??梢栽跒g覽器端禁用js腳本,比如在FireFox上安裝FireBug這一插件就可以實(shí)現(xiàn)這一功能。另外一種是通過代理工具來實(shí)現(xiàn),下面介紹利用Burp Suite來繞過客戶端javascript檢測(cè)。Burp Suite不僅僅只是一個(gè)代理工具,更是一款強(qiáng)大的網(wǎng)絡(luò)滲透利器。關(guān)于Burp Suite的詳細(xì)資料請(qǐng)自行百度。 這個(gè)站點(diǎn)(注:由于該網(wǎng)站為真實(shí)站點(diǎn),為了目標(biāo)網(wǎng)站的安全,所以用target來代替真實(shí)域名)的文件上傳功能只采用了客戶端javascript檢測(cè),所以很容易被繞過。下面我們來具體看下操作方法。首先,我們看一下正常情況下上傳一個(gè).asp文件,應(yīng)用會(huì)有什么反應(yīng)。 a. 我們?cè)L問這個(gè)URL(/AdvHTML_Popups/upload.asp),會(huì)出現(xiàn)一個(gè)上傳文件的頁面 b. 我們先選擇一個(gè).asp文件,這時(shí)會(huì)提示不允許上傳這種類型的文件。注意,這時(shí)我們還沒有點(diǎn)擊“件,這時(shí)會(huì)提示按鈕,就出現(xiàn)提示信息。我們可以判斷出這個(gè)網(wǎng)站是在客戶端判斷上傳文件類型的合法性的。上面的情況證明在正常情況下是不能成功上傳.asp文件的,那么下面就來看下如何繞過這種檢測(cè)吧。 c. 我們先打開Burp Suite代理工具,然后配置瀏覽器使用代理。 d. 我們先把剛才的那個(gè).asp文件擴(kuò)展名改為.gif,然后點(diǎn)擊“然后點(diǎn)擊“為那按鈕。這時(shí)Burp Suite中就會(huì)攔截到瀏覽器提交的HTTP數(shù)據(jù)包。我們把filename字段的值webshell.gif修改為webshell.asp,再點(diǎn)擊“再點(diǎn)擊“ell”按鈕,會(huì)發(fā)現(xiàn)文件成功上傳到服務(wù)器。 2.繞過服務(wù)端MIME類型檢測(cè)服務(wù)端MIME類型檢測(cè)是通過檢查http包的Content-Type字段中的值來判斷上傳文件是否合法的。我們來訪問35/upload.html,這是一個(gè)上傳頁面,當(dāng)你選擇上傳文件,點(diǎn)擊“上傳”按鈕后,會(huì)跳轉(zhuǎn)到uploadf.php中進(jìn)行處理。先來看下uploadf.php的代碼。那么我們?nèi)绾卫@過這種檢測(cè)方式呢?下面來看具體操作,還是用Burp Suite來完成。 我準(zhǔn)備上傳webshell.php到服務(wù)器,這是個(gè)一句話木馬。選擇好文件,然后點(diǎn)擊“上傳”,這時(shí)Burp Suite攔截到發(fā)往服務(wù)器的HTTP請(qǐng)求,我們?cè)贐urp Suite修改HTTP數(shù)據(jù)包中的內(nèi)容,然后點(diǎn)擊“據(jù)包中的內(nèi)容,然按鈕把數(shù)據(jù)包再轉(zhuǎn)發(fā)給服務(wù)器。 這時(shí)會(huì)提示文件成功上傳,還會(huì)顯示文件保存路徑,說明我們成功繞過了服務(wù)端的MIME文件類型檢測(cè)。 現(xiàn)在我們用中國菜刀連接一下,可以成功訪問到。 3.繞過服務(wù)端文件擴(kuò)展名檢測(cè) 現(xiàn)在我們來看下如何繞過服務(wù)端文件擴(kuò)展名檢測(cè),先來看下這兩段代碼。上面的代碼是一個(gè)上傳表單,在選擇上傳文件,點(diǎn)擊“上傳”按鈕后會(huì)跳轉(zhuǎn)到uploadfiles.asp中進(jìn)行處理。我們來看下uploadfiles.asp文件中檢測(cè)上傳文件擴(kuò)展名的代碼。 上面代碼的意思是先得到上傳文件的擴(kuò)展名,然后和允許上傳的文件類型對(duì)比,如果不符合定義,則提示“上傳的文件格式不對(duì)!”。下面具體看下如何繞過這種檢測(cè)方式,我們先直接上傳一個(gè).asp的木馬,會(huì)提示上傳文件格式不對(duì),這和我們預(yù)期的結(jié)果一致?,F(xiàn)在我們將webshell.asp改為webshell.asp;test.jpg,再次上傳,會(huì)發(fā)現(xiàn)我們的webshell被成功上傳到服務(wù)器上。 現(xiàn)在我們來訪問下,地址為 05/bookpic/webshell.asp;test.jpg,可以正常訪問,如 注:這里利用了IIS的解析漏洞,當(dāng)文件名為1.asp;1.jpg時(shí),IIS會(huì)將此文件解析為1.asp,文件名被截?cái)?,?dǎo)致腳本被執(zhí)行。而且存放上傳文件的目錄要有執(zhí)行腳本的權(quán)限,否則不能執(zhí)行成功。設(shè)計(jì)安全的文件上傳功能 上面我們介紹了主流的文件上傳檢測(cè)以及繞過檢測(cè)的方式,那么如何設(shè)計(jì)出一個(gè)安全的文件上傳功能呢?下面我們就來總結(jié)一下。 1.設(shè)置保存上傳文件的目錄為不可執(zhí)行 只要Web服務(wù)器無法解析該目錄下的文件,即使攻擊者上傳了腳本文件,服務(wù)器本身也不會(huì)受到影響,此點(diǎn)至關(guān)重要。 2.判斷文件類型 在判斷文件類型時(shí),可以結(jié)合使用MIME Type、后綴檢查等方式。在文件類型檢查中,強(qiáng)烈建議采用白名單的方式。此外,對(duì)于圖片的處理可以使用壓縮函數(shù)或者resize函數(shù),在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 泰州防水涂裝施工方案
- 2025年中考語文滿分作文的精彩構(gòu)思:標(biāo)題+開頭段+主體段+結(jié)尾段
- 廣東省深圳實(shí)驗(yàn)學(xué)校高中部2024-2025學(xué)年高二上學(xué)期期末考試英語試題【含答案】
- 回填基坑施工方案范本
- 樹木粉碎施工方案
- 2025年液晶電視維修試題及答案
- 6年級(jí)科學(xué)小發(fā)明
- coqh2-細(xì)胞色素c還原酶
- cia年檢繼續(xù)教育積分填報(bào)流程
- cascode電流鏡環(huán)路增益
- HONEYWELLDCS操作手冊(cè)
- 2021-2022新教科版四年級(jí)科學(xué)下冊(cè)全一冊(cè)全部課件(共24課)
- 方正飛騰使用教程詳解
- 3 棄渣場(chǎng)施工方案
- DCA-X86100D86105C光示波器使用說明
- 國外客戶來訪行程安排表
- 布氏硬度值與壓痕對(duì)照表
- JJG 1173-2019電子式井下壓力計(jì) 檢定規(guī)程(高清版)
- 八路搶答器PLC控制系統(tǒng)設(shè)計(jì)
- 《車輛解壓委托書 》
- 工件的裝夾PPT課件
評(píng)論
0/150
提交評(píng)論