❶ 文件上傳漏洞原理和繞過方式
1. 文件上傳漏洞概述
文件上傳漏洞是Web應用中常見的安全問題。攻擊者利用此漏洞可對伺服器執行非法操作。這類漏洞通常出現在網站的文件上傳功能中,當網站代碼沒有嚴格驗證上傳文件的後綴和類型時,攻擊者可能會上傳危險文件。一旦惡意文件被傳入如PHP的易執行腳本解釋器,攻擊者便能執行惡意任務,如資料庫操縱、伺服器文件管理及伺服器命令執行等。
2. 文件上傳繞過技術
- 客戶端JavaScript檢查:一種常見的防禦手段,通過檢查文件後綴是否符合白名單規則來過濾非預期上傳。然而,攻擊者可以通過修改文件後綴名、利用工具如Burpsuite截斷文件後綴來繞過此檢查。
- 服務端檢測:包括MIME類型檢查和後綴名檢測。MIME類型檢查關注Content-Type的值,後綴名檢測結合黑白名單進行。繞過策略可能包括大小寫繞過、利用特殊文件名特性或htaccess文件等。
- 目錄路徑檢查:檢查上傳文件的路徑,防止攻擊者上傳到不應放置的目錄。攻擊者可能通過對路徑進行「0x00」截斷或操控上傳文件夾參數來繞過。
- 文件內容檢測:通過檢查文件內容來判斷其類型,如檢查GIF幻數判斷是否為圖片文件。繞過可以通過在幻數後添加惡意代碼實現。
3. 解析漏洞和繞過方法
- IIS伺服器:在處理帶有多個擴展名的文件時可能出現解析錯誤,導致執行非預期文件。
- Apache伺服器:解析規則在遇到未知擴展名時會從後向前解析,可被利用繞過限制。
- PHP CGI配置:cgi.fi參數默認啟用可能導致解析漏洞。
- Nginx伺服器:通過在圖片中嵌入PHP代碼,結合特定參數利用空位元組執行代碼。
- Windows系統:不合法的文件名如包含空格或點可能會被系統自動修正,繞過文件名驗證。
- Apache配置:特定版本允許上傳.htaccess文件,通過修改設置重新指定文件為PHP解釋,執行惡意文件。