💡 什麼是檔案上傳漏洞(Insecure File Upload)?
在現代網頁應用程式中,「檔案上傳」是非常常見的功能,舉凡上傳頭像、附件履歷、或是上傳商品圖片等。然而,如果開發者在處理檔案上傳時沒有做好嚴格的安全性檢查,就可能導致檔案上傳漏洞(Insecure File Upload)。
當攻擊者能夠將惡意的執行檔(例如包含後門程式的 PHP、JSP 或 ASP 檔案)上傳到伺服器,並且該檔案能夠被伺服器直接解析或執行時,攻擊者就能夠直接在伺服器上執行任意指令,從而取得 WebShell(網頁後門),進而完全掌控整個網站伺服器!
🛡️ 常見的防禦機制與繞過手法
為了防止使用者上傳惡意檔案,開發者通常會實作多種檢驗機制,但在滲透測試中,這些機制經常可以透過各種技巧被繞過:
繞過: 攻擊者可以直接透過 Burp Suite 攔截請求,先上傳真正的惡意後門檔案(如 shell.php),或者直接在前端關閉 JS 檢查。前端的驗證對攻擊者來說形同虛設。
繞過: 若開發者過濾不夠嚴謹,攻擊者可以嘗試使用伺服器支援的其他可執行副檔名來繞過,例如 .php5、.phtml、.phar,或者利用大小寫混淆(如 shell.PhP)在某些特定作業系統上成功觸發解析。
繞過: 使用 Burp Suite 攔截上傳請求,將 Content-Type: application/x-httpd-php 手動修改為 image/jpeg,就能欺騙後端伺服器。
繞過: 攻擊者可以將惡意 PHP 程式碼「藏」在合法的圖片檔案內容後面(也就是製作 GIFAR / 圖片木馬),讓檔案同時具備合法的圖片特徵與惡意的 PHP 程式碼。
🛠️ 什麼是 WebShell?
當惡意檔案成功上傳並被儲存在伺服器可存取的公開目錄後,攻擊者只要在瀏覽器輸入該檔案的網址(例如 http://target.com/uploads/shell.php?cmd=whoami),就能透過網頁介面或簡單的參數傳遞來執行系統指令。這就是 WebShell,它讓攻擊者擁有一個隱蔽且穩固的遠端控制管道。