標籤:來源 學院 上傳檔案 截斷 也有 附件 enter 包含 內容
什麼是檔案上傳漏洞
檔案上傳漏洞是在使用者上傳了一個可執行檔指令檔,本通過此指令檔獲得了執行伺服器端命令的功能,這種攻擊方式是最為直接,最為有效,有時候,幾乎沒有什麼門檻,也就是任何人都可以進行這樣的攻擊。檔案上傳為什麼會是漏洞呢?檔案上傳本身是沒有問題的,問題是檔案上傳後看伺服器怎麼來處理,怎麼來解析這個檔案。如果說伺服器處理的模式不夠安全,那麼就會導致嚴重的後果,也就是上傳了惡意的可執行檔以後,伺服器端對此檔案進行執行。
檔案上傳後導致的安全問題
上傳的檔案是web指令碼語言,伺服器的web容器解釋並執行了檔案上傳的web指令碼,導致了代碼的執行。另外,上傳檔案是flash的策略檔案,駭客可以通過控制flash在該域下的行為,來進行其他攻擊。上傳檔案是病毒,木馬檔案,那攻擊者可以誘使檔案中其他的人員下載執行。檔案上傳也有可能是釣魚圖片,或者包含了指令檔的圖片,在某些版本的瀏覽器中,這些指令檔會被執行,可以用來做釣魚攻擊。除此以外,還有一些不常見的利用方法,比如將一個檔案作為一個入口,溢出伺服器的幕後處理程式,片解析模組,或者上傳一個合法的檔案,其內容包含了php的代碼,再通過檔案包含,來執行這個指令碼。
完成攻擊的條件
在大多數情況下,檔案上傳漏洞一般是指上傳web指令碼能夠被伺服器解析的問題,也就是通常說的web shell的問題,要完成這個攻擊,需要滿足以下幾個條件:
首先上傳的檔案能夠被web容器解釋執行,所以檔案上傳後的目錄要是web容器所覆蓋的路徑。其次,web伺服器能夠訪問這個檔案,如果檔案上傳了,但使用者無法通過web訪問,那攻擊者即使上傳了這個檔案也是訪問不到這個檔案的,這樣的話,上傳也就不能被利用。最後使用者上傳的檔案被安全監測格式化,圖片壓縮等改變了內容,就有可能導致這個檔案解析失敗。
檔案上傳的情境
對網站熟悉的人都瞭解,比如我們要發布一個內容,而且是圖文資訊,那我可能會上傳一些圖片、附件。
如何利用上傳
同樣dvwa的環境
先構造一個檔案 儲存為指令檔1.php輸入內容如下:
<?php
phpinfo();
?>
先使用低安全層級,也就是沒有防禦看如何上傳
Upload後可以看到1.php被成功上傳,訪問上傳的目錄位置
可以看到上傳的指令碼被執行,沒有對檔案尾碼名做任何判斷就直接接收了此檔案,並且執行。
如果說上傳的指令碼是一個web shell後門,那我們就可以直接擷取到伺服器的控制許可權,
低安全層級的實現,擷取到檔案以後,直接將這個檔案移動到目錄下,沒有做任何判斷。
中安全層級,這裡做了一個簡單的判斷,只允許檔案類型為jpeg上傳,這樣的過濾或處理雖然能達到一定的效果,比如,剛才的指令碼就不能被上傳。
再次上傳1.php,我們可以看到沒有反饋,檔案上傳失敗。實際上這種防禦方式是非常容易被繞過的,我麼可以利用之前介紹的工具burpsuite,這個工具是一個代理抓包的工具,也就是我可以設定瀏覽器代理。瀏覽器在訪問的時候,所有的資料請求都會通過這個工具,這個工具通過截斷處理後再提交給web伺服器,進而做出相應,這個時候,如果我在上傳的時候還是1.php,但實際上,會先通過這個工具抓包截斷,把我的檔案頭資訊改成圖標題資訊,再進行提交。這個時候,我們就可以很輕易的繞過這個防禦機制,進而達到上傳的效果
文章來源:麥子學院
原文連結:http://www.maiziedu.com/wiki/websafety/fileupload/
Web應用安全之檔案上傳漏洞詳解