檔案上傳漏洞總結
1.檔案上傳漏洞
檔案上傳漏洞是指使用者上傳了一個可執行的指令碼檔案,並通過此指令碼檔案獲得了執行伺服器端的命令。
2.Apache檔案解析問題
在Apache 1.x 2.x 中,對檔名的解析就存在一下特徵。
Apache對於檔名的解析是從後往前解析的,直到遇見一個Apache認識的檔案型別為止。
例:phpshell.php.rar.rar.rar
因為Apache不認識.rar這個檔案型別,所以會一直遍歷字尾到.php,然後認為這是一個PHP型別的檔案。從而被利用上傳木馬,getshell.
3.IIS檔案解析問題
畸形檔名解析:
1.當檔名為yijuhua.asp;1.jpg時,IIS會將檔案解析為yijuhua.asp,檔名截斷並解析。
2.處理資料夾副檔名出錯導致/*.asp/ 目錄下的所有檔案都作為ASP檔案進行解析。
4.繞過檔案上傳檢查功能
1.前端檢查副檔名繞過
當用戶在客戶端選擇檔案點選上傳的時候,客戶端還沒有向伺服器傳送任何訊息,就對本地檔案進行檢測來判斷是否是可以上傳的型別,這種方式稱為前臺指令碼檢測副檔名。
繞過前臺指令碼檢測副檔名,就是將所要上傳檔案的副檔名更改為符合指令碼檢測規則的副檔名,通過BurpSuite工具,擷取資料包,並將資料包中副檔名更改回原來的,達到繞過的目的。
2.服務端副檔名檢測繞過
當瀏覽器將檔案提交到伺服器端的時候,伺服器端會根據設定的黑白名單對瀏覽器提交上來的副檔名進行檢測,如果上傳的副檔名不符合黑白名單的限制,則不予上傳,否則上傳成功。
將一句話木馬的檔名【yijuhua.php】,改成【yijuhua.php.jpg】(奇怪的不被解析的字尾名都行)。首先,伺服器驗證副檔名的時候,驗證的是【.jpg】,只要該副檔名符合伺服器端黑白名單規則,即可上傳。另外,當在瀏覽器端訪問該檔案時,Apache如果解析不了【.jpg】副檔名,會向前尋找可解析的副檔名,即【.php】
3.Content-Type檢測檔案型別繞過
當瀏覽器在上傳檔案到伺服器的時候,伺服器對說上傳檔案的Content-Type型別進行檢測,如果是白名單允許的,則可以正常上傳,否則上傳失敗。
繞過Content--Type檔案型別檢測,就是用BurpSuite擷取並修改資料包中檔案的Content-Type型別(如改為:image/gif),使其符合白名單的規則,達到上傳的目的。
5.如何避免檔案上傳安全問題
1.檔案上傳的目錄設定為不可執行
只要web容器無法解析該該目錄下的檔案,即使攻擊者上傳了指令碼檔案,伺服器本身也不會收到影響。
2.判斷檔案型別
判斷檔案型別,判斷副檔名,檔案內容等方式。
3.使用隨機數改寫檔名和檔案路徑
成功上傳了木馬檔案,需要攻擊者能夠訪問到這個檔案,這時,可以使用隨機數改寫檔名和檔案路徑來避免此類攻擊。