iT邦幫忙

0

Day 21:檔案上傳漏洞:繞過檔名檢驗與取得 WebShell 存取權

  • 分享至 

  • xImage
  •  

💡 什麼是檔案上傳漏洞(Insecure File Upload)?
在現代網頁應用程式中,「檔案上傳」是非常常見的功能,舉凡上傳頭像、附件履歷、或是上傳商品圖片等。然而,如果開發者在處理檔案上傳時沒有做好嚴格的安全性檢查,就可能導致檔案上傳漏洞(Insecure File Upload)。

當攻擊者能夠將惡意的執行檔(例如包含後門程式的 PHP、JSP 或 ASP 檔案)上傳到伺服器,並且該檔案能夠被伺服器直接解析或執行時,攻擊者就能夠直接在伺服器上執行任意指令,從而取得 WebShell(網頁後門),進而完全掌控整個網站伺服器!

🛡️ 常見的防禦機制與繞過手法
為了防止使用者上傳惡意檔案,開發者通常會實作多種檢驗機制,但在滲透測試中,這些機制經常可以透過各種技巧被繞過:

  1. 僅依賴前端檢查(Client-side Validation)
    防禦: 開發者在前端用 JavaScript 檢查副檔名(例如限制只能上傳 .jpg 或 .png)。

繞過: 攻擊者可以直接透過 Burp Suite 攔截請求,先上傳真正的惡意後門檔案(如 shell.php),或者直接在前端關閉 JS 檢查。前端的驗證對攻擊者來說形同虛設。

  1. 黑名單機制與副檔名繞過(Blacklist Bypass)
    防禦: 後端禁止上傳 .php 檔案,但允許其他副檔名。

繞過: 若開發者過濾不夠嚴謹,攻擊者可以嘗試使用伺服器支援的其他可執行副檔名來繞過,例如 .php5、.phtml、.phar,或者利用大小寫混淆(如 shell.PhP)在某些特定作業系統上成功觸發解析。

  1. Content-Type 檢查繞過
    防禦: 後檢查 HTTP 標頭中的 Content-Type 是否為圖片(例如 image/jpeg)。

繞過: 使用 Burp Suite 攔截上傳請求,將 Content-Type: application/x-httpd-php 手動修改為 image/jpeg,就能欺騙後端伺服器。

  1. 檔案內容與 Magic Number 檢查
    防禦: 檢查檔案的開頭幾個位元組(Magic Number,例如 JPG 檔案開頭為 FF D8 FF)。

繞過: 攻擊者可以將惡意 PHP 程式碼「藏」在合法的圖片檔案內容後面(也就是製作 GIFAR / 圖片木馬),讓檔案同時具備合法的圖片特徵與惡意的 PHP 程式碼。

🛠️ 什麼是 WebShell?
當惡意檔案成功上傳並被儲存在伺服器可存取的公開目錄後,攻擊者只要在瀏覽器輸入該檔案的網址(例如 http://target.com/uploads/shell.php?cmd=whoami),就能透過網頁介面或簡單的參數傳遞來執行系統指令。這就是 WebShell,它讓攻擊者擁有一個隱蔽且穩固的遠端控制管道。


*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言