文件上傳攻防解析.doc_第1頁
文件上傳攻防解析.doc_第2頁
文件上傳攻防解析.doc_第3頁
文件上傳攻防解析.doc_第4頁
文件上傳攻防解析.doc_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

Web攻防系列教程之 文件上傳攻防解析文件上傳是WEB應用很常見的一種功能,本身是一項正常的業(yè)務需求,不存在什么問題。但如果在上傳時沒有對文件進行正確處理,則很可能會發(fā)生安全問題。本文將對文件上傳的檢測方式以及如何繞過相應檢測方式進行詳細的分析,并提供針了對文件上傳攻擊的安全防護方法。 文件上傳攻擊是指攻擊者利用WEB應用對上傳文件過濾不嚴,導致可以上傳應用程序定義類型范圍之外的文件到Web服務器。比如可以上傳一個網(wǎng)頁木馬,如果存放上傳文件的目錄剛好有執(zhí)行腳本的權(quán)限,那么攻擊者就可以直接得到一個WebShell。文件上傳攻擊的原理 由于服務器端沒有對用戶上傳的文件進行正確的處理,導致攻擊者可以向某個可通過 Web 訪問的目錄上傳惡意文件,并且該文件可以被Web服務器解析執(zhí)行。攻擊者要想成功實施文件上傳攻擊,必須要滿足以下三個條件:1.可以上傳任意腳本文件,且上傳的文件能夠被Web服務器解析執(zhí)行,具體來說就是存放上傳文件的目錄要有執(zhí)行腳本的權(quán)限。2.用戶能夠通過Web訪問這個文件。如果文件上傳后,不能通過Web訪問,那么也不能成功實施攻擊。 3.要知道文件上傳到服務器后的存放路徑和文件名稱,因為許多Web應用都會修改上傳文件的文件名稱,那么這時就需要結(jié)合其他漏洞去獲取到這些信息。如果不知道上傳文件的存放路徑和文件名稱,即使你上傳了也無法訪問。主流文件上傳檢測方式概述主流的文件上傳檢測方式有以下五種:1.客戶端javascript檢測客戶端檢測通常在上傳頁面里含有專門檢測文件上傳的javascript代碼,在文件被上傳之前進行檢測,最常見的就是檢測上傳文件的文件類型和大小是否合法。 2.服務端MIME類型檢測這類檢測方法通過檢查http包的Content-Type字段中的值來判斷上傳文件是否合法。 3.服務端文件擴展名檢測這類檢測方法通過在服務端檢測上傳文件的擴展名來判斷文件是否合法。 4.服務端目錄路徑檢測這類檢測一般通過檢測路徑是否合法來判斷。 5.服務端文件內(nèi)容檢測這類檢測方法相當對上面四種檢測方法來說是最為嚴格的一種。它通過檢測文件內(nèi)容來判斷上傳文件是否合法。這里,對文件內(nèi)容的檢測主要有兩種方法。 A.通過檢測上傳文件的文件頭來判斷。通常情況下,通過判斷前10個字節(jié),基本就能判斷出一個文件的真實類型。B.文件加載檢測,一般是調(diào)用API或函數(shù)對文件進行加載測試。常見的是圖像渲染測試,再嚴格點的甚至是進行二次渲染。 如何繞過文件上傳檢測 上面我們分析了主流的文件上傳檢測方式,下面我們就來看下如何繞過上面提到的文件上傳檢測方式,本文只討論如何繞過前三種檢測方式。 1.繞過客戶端javascript檢測這種檢測方法是最不安全的,也是最容易被攻擊者繞過的。Web應用不應只采用這一種手段檢測上傳文件,但可以作為一種輔助手段。因為采用客戶端javascript檢測可以增強應用對用戶的友好度。由于javascript檢測是在客戶端實現(xiàn)的,所以我們完全能夠控制它。可以在瀏覽器端禁用js腳本,比如在FireFox上安裝FireBug這一插件就可以實現(xiàn)這一功能。另外一種是通過代理工具來實現(xiàn),下面介紹利用Burp Suite來繞過客戶端javascript檢測。Burp Suite不僅僅只是一個代理工具,更是一款強大的網(wǎng)絡滲透利器。關于Burp Suite的詳細資料請自行百度。 這個站點(注:由于該網(wǎng)站為真實站點,為了目標網(wǎng)站的安全,所以用target來代替真實域名)的文件上傳功能只采用了客戶端javascript檢測,所以很容易被繞過。下面我們來具體看下操作方法。首先,我們看一下正常情況下上傳一個.asp文件,應用會有什么反應。 a. 我們訪問這個URL(/AdvHTML_Popups/upload.asp),會出現(xiàn)一個上傳文件的頁面 b. 我們先選擇一個.asp文件,這時會提示不允許上傳這種類型的文件。注意,這時我們還沒有點擊“件,這時會提示按鈕,就出現(xiàn)提示信息。我們可以判斷出這個網(wǎng)站是在客戶端判斷上傳文件類型的合法性的。上面的情況證明在正常情況下是不能成功上傳.asp文件的,那么下面就來看下如何繞過這種檢測吧。 c. 我們先打開Burp Suite代理工具,然后配置瀏覽器使用代理。 d. 我們先把剛才的那個.asp文件擴展名改為.gif,然后點擊“然后點擊“為那按鈕。這時Burp Suite中就會攔截到瀏覽器提交的HTTP數(shù)據(jù)包。我們把filename字段的值webshell.gif修改為webshell.asp,再點擊“再點擊“ell”按鈕,會發(fā)現(xiàn)文件成功上傳到服務器。 2.繞過服務端MIME類型檢測服務端MIME類型檢測是通過檢查http包的Content-Type字段中的值來判斷上傳文件是否合法的。我們來訪問35/upload.html,這是一個上傳頁面,當你選擇上傳文件,點擊“上傳”按鈕后,會跳轉(zhuǎn)到uploadf.php中進行處理。先來看下uploadf.php的代碼。那么我們?nèi)绾卫@過這種檢測方式呢?下面來看具體操作,還是用Burp Suite來完成。 我準備上傳webshell.php到服務器,這是個一句話木馬。選擇好文件,然后點擊“上傳”,這時Burp Suite攔截到發(fā)往服務器的HTTP請求,我們在Burp Suite修改HTTP數(shù)據(jù)包中的內(nèi)容,然后點擊“據(jù)包中的內(nèi)容,然按鈕把數(shù)據(jù)包再轉(zhuǎn)發(fā)給服務器。 這時會提示文件成功上傳,還會顯示文件保存路徑,說明我們成功繞過了服務端的MIME文件類型檢測。 現(xiàn)在我們用中國菜刀連接一下,可以成功訪問到。 3.繞過服務端文件擴展名檢測 現(xiàn)在我們來看下如何繞過服務端文件擴展名檢測,先來看下這兩段代碼。上面的代碼是一個上傳表單,在選擇上傳文件,點擊“上傳”按鈕后會跳轉(zhuǎn)到uploadfiles.asp中進行處理。我們來看下uploadfiles.asp文件中檢測上傳文件擴展名的代碼。 上面代碼的意思是先得到上傳文件的擴展名,然后和允許上傳的文件類型對比,如果不符合定義,則提示“上傳的文件格式不對!”。下面具體看下如何繞過這種檢測方式,我們先直接上傳一個.asp的木馬,會提示上傳文件格式不對,這和我們預期的結(jié)果一致?,F(xiàn)在我們將webshell.asp改為webshell.asp;test.jpg,再次上傳,會發(fā)現(xiàn)我們的webshell被成功上傳到服務器上。 現(xiàn)在我們來訪問下,地址為 05/bookpic/webshell.asp;test.jpg,可以正常訪問,如 注:這里利用了IIS的解析漏洞,當文件名為1.asp;1.jpg時,IIS會將此文件解析為1.asp,文件名被截斷,導致腳本被執(zhí)行。而且存放上傳文件的目錄要有執(zhí)行腳本的權(quán)限,否則不能執(zhí)行成功。設計安全的文件上傳功能 上面我們介紹了主流的文件上傳檢測以及繞過檢測的方式,那么如何設計出一個安全的文件上傳功能呢?下面我們就來總結(jié)一下。 1.設置保存上傳文件的目錄為不可執(zhí)行 只要Web服務器無法解析該目錄下的文件,即使攻擊者上傳了腳本文件,服務器本身也不會受到影響,此點至關重要。 2.判斷文件類型 在判斷文件類型時,可以結(jié)合使用MIME Type、后綴檢查等方式。在文件類型檢查中,強烈建議采用白名單的方式。此外,對于圖片的處理可以使用壓縮函數(shù)或者resize函數(shù),在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論