Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

FTP 服務器「斷點續傳」權限漏洞:任意用戶可篡改/破壞他人文件

編輯:關於伺服器

許多 FTP 服務器為了用戶體驗開啟「斷點續傳」功能,卻忽略了其背後的權限邏輯缺陷:擁有「寫入/追加」權限的用戶,可利用 REST 命令任意修改/截斷/注入同目錄下其他用戶上傳的文件。本文複現漏洞原理、演示破壞後果、給出徹底修復方案。

漏洞原理:REST 命令被濫用

FTP 協議 REST 用於告知服務器「下一次傳輸從文件偏移量 開始」。正常斷點續傳流程:

  1. 客戶端 SIZE filename 獲取已上傳大小;
  2. 客戶端 REST 設置斷點;
  3. 客戶端 STOR filename (或 APPE) 追加剩餘數據。

漏洞利用: 攻擊者針對已存在的完整文件,故意設置 REST 為文件當前大小,再 STOR 少量數據 → 文件被追加;若設置 REST 0 再 STOR → 文件被覆蓋/截斷。關鍵在於:服務器未驗證「發起 REST 的用戶是否為文件原上傳者/擁有者」,只要目錄有寫權限即可操作任意文件。

實戰複現 (Serv-U 4.0 / Windows 2000 測試)

# 假設 FTP 目錄下存在 Readme.txt (1000 bytes),攻擊者有寫權限
ftp> dir
200 PORT command successful
150 Opening data connection
-rw-r--r--   1 user1    users       1000 Jan 01 00:00 Readme.txt
226 Transfer complete

ftp> quote REST 1000          # 設置斷點為文件末尾
350 Restarting at 1000. Send STORE or RETRIEVE to initiate transfer

ftp> put evil.txt              # 本地 evil.txt 500 bytes
200 PORT command successful
150 Opening data connection
226 Transfer complete

ftp> dir
-rw-r--r--   1 user1    users       1500 Jan 01 00:01 Readme.txt  # 文件被追加 500 bytes!

# 進階破壞:REST 0 + STOR 惡意腳本 → 覆蓋原文件
# 二進制文件 (視頻/壓縮包/可執行文件) 被注入數據 → CRC 校驗失效、播放失敗、解壓報錯、執行惡意代碼

破壞後果評級

文件類型注入/追加/截斷後果業務影響
視頻/音頻 (MP4/AVI/MKV/MP3)容器結構破壞,播放器報「非法文件/無法播放/損壞」素材庫失效、審核失敗、分發中斷
壓縮包 (ZIP/RAR/7Z/TAR.GZ)CRC32 校驗失敗,解壓報「文件損壞/非法壓縮包」備份不可恢複、交付包驗收失敗、惡意代碼植入風險
可執行文件 (EXE/APK/SO/DLL)PE/ELF 頭破壞,簽名驗證失敗,若注入 Shellcode 且繞過 DEP/ASLR → RCE供應鏈投毒、客戶端植入後門、信譽災難
文檔/代碼/配置語法錯誤、邏輯篡改、敏感信息竄改構建失敗、配置漂移、合規違規

根因:權限模型缺失「文件級所有權/操作授權」

  • FTP 協議設計早期未考慮多用戶共享寫入目錄場景;
  • 主流 FTP 軟件 以「目錄權限」為最小授權粒度,缺乏「文件所有者」元數據與「REST/STOR/DELE/RNFR/RNTO」操作的所有權校驗;
  • 「寫入權限 = 目錄下所有文件可任意修改」是錯誤假設。

徹底修復方案:目錄級強隔離 (唯一有效方案)

# 核心原則:每個 FTP 用戶/業務方 獨享一個物理/虛擬目錄,目錄間絕對隔離

# 1. 物理隔離 (最簡單、最徹底)
/data/ftp/
├── user_a/     # 僅 user_a 有完整權限
├── user_b/     # 僅 user_b 有完整權限
├── public/     # 僅只讀/特定上傳目錄可寫,定期掃描清理

# 2. 虛擬隔離 (Serv-U / IIS FTP / vsftpd 虛擬用戶)
# 配置每用戶 Home Directory = /data/ftp/user_x
# 啟用 "Lock User to Home Directory" / chroot_local_user=YES
# 物理層面仍可為同一磁盤分區,邏輯層面絕對隔離

# 3. 共享協作目錄 (若業務必須共享)
# 僅建立「上傳箱」目錄:寫入權限 + 定時掃描病毒 + 定時移動至只讀區
# 禁止在共享目錄直接編輯/覆蓋他人文件,流程走「上傳新版本 → 審核 → 發布」

輔助緩解措施 (不可替代隔離)

  • 禁用 REST/APPE 命令: 部分 FTP 軟件支援命令級禁用,但會破壞合法斷點續傳體驗;
  • 上傳文件完整性校驗: 上傳完成後自動計算 SHA256、記錄上傳者、時間戳、存入數據庫,下載/使用前驗證;
  • WORM (一次寫入多次讀取) 存儲: 對象存儲/合規模式/磁帶庫,寫入後不可修改刪除;
  • 定期快照/備份: 即使被篡改,可從快照恢複,壓縮 RPO。

結語: FTP「斷點續傳」漏洞本質是「協議權限粒度粗糙 + 多用戶共享寫入目錄」的結合產物。無例外:必須實施「用戶獨享目錄 + chroot 強隔離」。共享協作場景採用「上傳箱 + 審核流轉 + WORM 存儲」模式。將 FTP 從「共享文件夾」重構為「安全傳輸管道」,才能從根源消除此類邏輯漏洞。

Copyright © Windows教程網 All Rights Reserved