ASP 內建 FileSystemObject (FSO) 提供強大檔案系統操作能力 (讀/寫/複製/刪除/重命名),若未妥善限制,惡意用戶可上傳 FSO 木馬遍歷、竊取、破壞同主機其他虛擬主機網站檔案。禁用 FSO 則導致合法 ASP 應用 (CMS、上傳元件、日誌系統) 全面失效。本文提供 Windows Server 2003 環境下,透過 NTFS 權限與匿名帳號隔離實現「FSO 可用、跨站隔離」的完整配置方案。
IUSR_機器名)。Everyone、Users 等寬鬆權限,建立「預設拒絕、顯式允許」基線。Everyone、Users 群組。IIS_WPG 群組 (IIS 6.0 工作進程群組) 授予「讀取與執行」、「列出資料夾內容」、「讀取」權限。
此步驟確保 FSO 木馬以預設匿名身分執行時,無法存取系統目錄、其他網站目錄、甚至 C: 根目錄。
AbcUsercompmgmt.msc → 系統工具 → 本地用戶和群組 → 用戶 → 右鍵「新增用戶」。AbcUser,設定高複雜度密碼。Users,加入 Guests 群組 (最低權限基線)。E:\Abc → 內容 → 安全性 → 進階。| 主體 | 權限 | 說明 |
|---|---|---|
| Administrators | 完全控制 (F) | 管理員完整管理 |
| AbcUser | 修改 (M) / 讀取與執行、列出資料夾、讀取、寫入 | 網站匿名身分讀寫執行 |
| SYSTEM | 讀取與執行 (可選,視備份軟體需求) | 備份代理程式通常需 SYSTEM 讀取 |
關鍵: 不添加 Everyone、Users、IIS_WPG、IUSR_* 等其他身分。
Abc.com → 內容 → 目錄安全性 → 「驗證與存取控制」→「編輯」。IUSR_機器名,點擊「瀏覽」選取剛建立的 AbcUser。
Abc.com 正常運作,ASP 上傳/讀寫/刪除功能正常 (以 AbcUser 身分)。C:\、D:\OtherSite、E:\Xyz → 全部「拒絕存取」錯誤 (800A0046 / Permission denied)。E:\Abc。解決: 修改 IIS Metabase 屬性 ASPMaxRequestEntityAllowed。
net stop iisadmin /y (會級聯停止 WWW、FTP、SMTP 等)。C:\Windows\System32\inetsrv\MetaBase.xml (備份後編輯)。ASPMaxRequestEntityAllowed,預設值 204800 (200KB)。51200000 (50MB) 或 104857600 (100MB)。net start w3svc (依序啟動相關服務)。注意: IIS 6.0 不支援透過 Metabase Explorer 即時修改此屬性,必須離線編輯 XML。修改後需重啟 IIS Admin Service 生效。
FileSystemObject、CreateObject、WScript.Shell、ADODB.Stream 等高風險關鍵字 (需謹慎測試避免誤攔合法應用)。為每個網站建立獨立應用程式池,身分設定為對應的專屬匿名帳號 (AbcUser) 或建立專屬網域帳號。此法比匿名帳號隔離更徹底:連 IIS 工作進程層級都隔離,記憶體、句柄、權限標記完全獨立。
| 項目 | 檢查點 | 狀態 |
|---|---|---|
| 系統磁碟基線 | C: 移除 Everyone/Users,新增 IIS_WPG 唯讀權限 | ☐ |
| 專屬匿名帳號 | 每網站一組,屬 Guests 群組,密碼複雜/永不過期 | ☐ |
| 目錄 ACL | 僅 Administrators + 專屬帳號 (+SYSTEM 視備份需求),無繼承 | ☐ |
| IIS 綁定 | 網站匿名驗證指向專屬帳號,密碼同步正確 | ☐ |
| 上傳目錄 | 專屬帳號有寫入權限,移除執行權限 (X) 防止上傳 ASP/EXE 執行 | ☐ |
| 上傳大小 | MetaBase.xml ASPMaxRequestEntityAllowed 已調整 | ☐ |
| 執行權限 | 上傳目錄 IIS「主目錄」→「執行權限」設為「無/僅腳本」 | ☐ |
落實「一站一帳號、一目錄一 ACL、預設拒絕、顯式允許」,在保留 FSO 強大功能的同時,將虛擬主機間的攻擊面壓縮至單一目錄邊界內,是共享主機環境資安的基石實作。