Web 目錄 (網站根目錄、上傳目錄、快取目錄) 絕不需要 執行 .exe、.bat、.cmd、.com、.ps1、.vbs、.js、.wsf 等可執行檔。攻擊者上傳 WebShell 後,常嘗試執行系統指令提權 (如 whoami, net user, powershell -enc)。利用 Windows 內建 軟體限制原則 (Software Restriction Policies, SRP),可在檔案系統層面強制阻斷,即便攻擊者拿到 SYSTEM 權限也無法繞過。
gpedit.msc → 「本機群組原則編輯器」。| 路徑 | 安全性等級 | 說明 |
|---|---|---|
D:\wwwroot\* (您的網站根目錄) | 不允許 (Disallowed) | 遞歸禁止該目錄及所有子目錄執行任何可執行程式碼 |
C:\Windows\Temp\* | 不允許 | 系統臨時目錄,所有用戶可寫,高風險落地執行點 |
C:\Windows\Tasks\* | 不允許 | 排程任務腳本落地目錄 |
%TEMP%\* / %TMP%\* | 不允許 | 當前使用者臨時目錄 |
C:\inetpub\temp\appPools\* | 不允許 | IIS 應用程式池暫存目錄 |
⚠ 路徑務必以通配符*結尾,覆蓋所有子目錄與檔案。
安全性等級選「不允許」,而非「基本使用者」——「基本使用者」仍允許執行簽名程式,「不允許」直接阻斷 CreateProcess 系統調用,任何身分 (含 SYSTEM) 均無法執行。
「軟體限制原則」→ 右鍵「指定的檔案類型」→ 確認/新增:.exe, .bat, .cmd, .com, .ps1, .vbs, .js, .jse, .wsf, .wsh, .msi, .msp, .scr, .pif, .application, .gadget 等。
D:\wwwroot\test 建立 test.bat 內容:@echo off & echo hello & pause。* → 僅封鎖該目錄直屬檔案,子目錄繞過。bin\* 套用「不允許」,改用 NTFS 拒絕寫入保護。@echo off
:: 建立 SRP 路徑規則需透過 secedit /import 或 PowerShell 操作註冊表
:: 此處提供註冊表直寫範例 (需重啟或 gpupdate 生效)
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths\{GUID1}" /v "ItemData" /t REG_SZ /d "D:\wwwroot\*" /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths\{GUID1}" /v "SaferFlags" /t REG_DWORD /d 0 /f :: 0=Disallowed
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths\{GUID2}" /v "ItemData" /t REG_SZ /d "C:\Windows\Temp\*" /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths\{GUID2}" /v "SaferFlags" /t REG_DWORD /d 0 /f
gpupdate /force
核心邏輯:Web 目錄 = 唯讀/可寫但不可執行。SRP 從作業系統載入器層面斷絕執行鏈,是「免費、無效能損耗、繞過極難」的終極防線。