文件上傳功能是Web應用中最基礎也最常見的模組之一,但從早期的IPC連接複製到腳本系統漏洞頻出,其安全問題始終伴隨著技術發展。早期駭客常利用IPC$共享連接進行文件傳輸,隨著動網等CMS系統普及,PHP、JSP等腳本語言的文件上傳漏洞大量曝光,核心成因多為路徑過濾不嚴、副檔名校驗缺失或空字節截斷繞過。
利用系統從右向左識別字符串的特性,在文件名中插入%00(NULL字節),使後綴檢查邏輯失效。例如 shell.php%00.jpg 經過處理後可能被識別為 shell.php。
伺服器解析規則配置不當(如IIS 6.0的 ;.asp、Apache的多後綴解析),導致非執行文件被當作腳本執行。
修改HTTP請求中的 Content-Type 頭為 image/gif,配合圖片馬(圖片隱寫術)繞過MIME類型檢查。
在嚴格防禦環境下,攻擊者可能組合多種技術:
uuencode 將二進制轉為可見ASCII字符,通過Telnet/SSH粘貼後在目標機 uudecode 還原。echo 逐行寫入VBS/PowerShell腳本,調用 XMLHTTP 或 ADODB.Stream 下載執行文件。start 命令下載文件至IE緩存目錄,再從緩存複製至系統目錄。Handler 映射為靜態文件處理器,移除執行權限發現Webshell時應立即:隔離受影響主機、保留現場鏡像、分析日誌定位入口、清理後門、修復漏洞、全網排查橫向移動痕跡。建議建立文件上傳審計日誌平台,記錄用戶、時間、文件名、存儲路徑、Hash值,便於事後追溯。
安全無絕對,唯有纏深度防禦、持續監測、快速響應,方能將風險控制在可接受範圍內。