檔案上傳若沒有妥善管控,是黑客攻陷網站的常見入口。今天要帶大家從實戰面測試並理解防禦機制!
一、檔案上傳漏洞基礎介紹與典型情境
什麼是檔案上傳漏洞?
網站若允許使用者上傳檔案,卻缺少嚴格檢查,很可能被攻擊者利用上傳惡意腳本,從而執行任意指令,這即是典型的檔案上傳漏洞。
常見攻擊手法
-
副檔名繞過:如將
shell.php
改名為 shell.php.jpg
或 shell.php;.jpg
。
-
MIME Type 偽造:攻擊者在上傳時偽裝檔案類型。
-
壓縮檔內嵌惡意程式:將惡意腳本打包成 Zip,嘗試繞過過濾。
二、實戰測試流程示意圖
使用者上傳檔案 → 伺服器接收 →
├─ 檢查副檔名 → 允許/拒絕
├─ 驗證 MIME Type → 允許/拒絕
├─ 對檔案內容進行 Magic Number 檢查 → 允許/拒絕
↓
檔案先放在隔離目錄(非執行目錄)
→ 再進行重新編碼或轉碼
→ 上傳完成,供網站使用(非執行)目錄存取

三、如何測試是否存在遠端命令執行漏洞?
- 嘗試上傳一個簡單的 WebShell,內容如 PHP:
<?php system($_GET['cmd']); ?>
- 上傳成功後,在瀏覽器透過以下連結觸發命令:
http://example.com/uploads/shell.php?cmd=whoami
- 若能看到執行結果,代表存在遠端命令執行漏洞。
四、示意防禦架構圖

五、實戰工具推薦與操作
- Burp Suite:攔截並調整上傳檔案的副檔名與 Header。
- bWAPP/DVWA:靶場環境練習檔案上傳漏洞。
- exiftool:分析圖片檔頭與隱藏資料。
六、今日關鍵心得分享
- 單靠副檔名過濾是不夠的,要同時驗證MIME Type,且用 Magic Number 進行深度檢查。
- 安全的檔案上傳系統應放在非執行目錄,加上轉碼處理大幅降低風險。
- 作為攻擊者,可變化多種繞過手法;作為防禦者,必須設想最壞狀況並實施多層防禦。
- 定期檢視與更新過濾規則,配合 WAF 能有效防止異常上傳。