前兩天我們學了針對資料庫的 SQLi 和針對使用者的 XSS。今天,我們要學習一個能直接瞄準伺服器本身的漏洞:文件上傳漏洞。
當一個網站允許使用者上傳檔案時,如果沒有做好嚴格的檢查,駭客就有機會上傳一個惡意的程式碼腳本(通常稱為 Web Shell)。一旦伺服器執行了這個腳本,駭客就能遠端控制這台伺服器,後果不堪設想。
今天,我完成了 TryHackMe 上的 "File Upload Vulnerabilities" 房間,學習了如何利用這個漏洞。
這個漏洞的成功,往往是因為防禦機制不夠嚴謹:
在房間中,我成功地將一個惡意的 PHP 檔案偽裝成圖片上傳,並在伺服器上執行它,進而取得了遠端控制權。這個體驗讓我感到震撼,因為這是一個非常直接且高風險的漏洞。
從防禦的角度來看,開發者在處理文件上傳功能時,必須抱持著極度謹慎的態度:絕對不能相信來自使用者的任何資訊! 必須在伺服器端進行多層次的檢查,包括嚴格檢查副檔名、檔案內容,並限制上傳目錄的執行權限。