攻擊者利用程序缺陷繞過系統對文件的驗證與處理策略將惡意代碼上傳到服務器並得到執行服務器端命令的能力。php
經常使用的攻擊手段有
- 上傳Web腳本代碼,Web容器解釋執行上傳的惡意腳本;
- 上傳Flash跨域策略文件crossdomain.xml,修改訪問權限(其餘策略文件利用方式相似);
- 上傳病毒、木馬文件,誘騙用戶和管理員下載執行;
- 上傳包含腳本的圖片,某些瀏覽器的低級版本會執行該腳本,用於釣魚和欺詐。
總的來講,利用的上傳文件要麼具有可執行能力(惡意代碼),要麼具有影響服務器行爲的能力(配置文件)。shell
防範方法
- 文件上傳的目錄設置爲不可執行
- 判斷文件類型,設置白名單。
- 對於圖片的處理,能夠使用壓縮函數或者resize函數,在處理圖片的同時破壞圖片中可能包含的HTML代碼;
- 使用隨機數改寫文件名和文件路徑
- 一個是上傳後沒法訪問
- 再來就是像shell、.php 、.rar和crossdomain.xml這種文件,都將由於重命名而沒法攻擊
- 單獨設置文件服務器的域名
- 因爲瀏覽器同源策略的關係,一系列客戶端攻擊將失效,好比上傳crossdomain.xml、上傳包含Javascript的XSS利用等問題將獲得解決。