SQL Server 2000 預設安裝多個擴展預存程序(Extended Stored Procedures),若遭惡意利用可導致伺服器被植入木馬、竊取檔案、執行系統指令。本文提供完整移除腳本與還原腳本,建議在正式環境執行移除前先於測試環境驗證應用程式相容性。
USE master;
GO
EXEC sp_dropextendedproc 'xp_cmdshell';
EXEC sp_dropextendedproc 'xp_dirtree';
EXEC sp_dropextendedproc 'xp_enumgroups';
EXEC sp_dropextendedproc 'xp_fixeddrives';
EXEC sp_dropextendedproc 'xp_loginconfig';
EXEC sp_dropextendedproc 'xp_enumerrorlogs';
EXEC sp_dropextendedproc 'xp_getfiledetails';
EXEC sp_dropextendedproc 'sp_OACreate';
EXEC sp_dropextendedproc 'sp_OADestroy';
EXEC sp_dropextendedproc 'sp_OAGetErrorInfo';
EXEC sp_dropextendedproc 'sp_OAGetProperty';
EXEC sp_dropextendedproc 'sp_OAMethod';
EXEC sp_dropextendedproc 'sp_OASetProperty';
EXEC sp_dropextendedproc 'sp_OAStop';
EXEC sp_dropextendedproc 'xp_regaddmultistring';
EXEC sp_dropextendedproc 'xp_regdeletekey';
EXEC sp_dropextendedproc 'xp_regdeletevalue';
EXEC sp_dropextendedproc 'xp_regenumvalues';
EXEC sp_dropextendedproc 'xp_regread';
EXEC sp_dropextendedproc 'xp_regremovemultistring';
EXEC sp_dropextendedproc 'xp_regwrite';
DROP PROCEDURE sp_makewebtask;
GO
| 程序名稱 | 風險說明 |
|---|---|
| xp_cmdshell | 執行作業系統指令,最高風險 |
| sp_OA* | OLE Automation 物件操作,可存取檔案系統、註冊表、網路 |
| xp_reg* | 登錄表讀寫,可竄改系統設定 |
| xp_dirtree / xp_getfiledetails | 列舉目錄結構、取得檔案詳細資訊,資訊洩露風險 |
USE master;
GO
EXEC sp_addextendedproc 'xp_cmdshell', 'xp_cmdshell.dll';
EXEC sp_addextendedproc 'xp_dirtree', 'xpstar.dll';
EXEC sp_addextendedproc 'xp_enumgroups', 'xplog70.dll';
EXEC sp_addextendedproc 'xp_fixeddrives', 'xpstar.dll';
EXEC sp_addextendedproc 'xp_loginconfig', 'xplog70.dll';
EXEC sp_addextendedproc 'xp_enumerrorlogs', 'xpstar.dll';
EXEC sp_addextendedproc 'xp_getfiledetails', 'xpstar.dll';
EXEC sp_addextendedproc 'sp_OACreate', 'odsole70.dll';
EXEC sp_addextendedproc 'sp_OADestroy', 'odsole70.dll';
EXEC sp_addextendedproc 'sp_OAGetErrorInfo', 'odsole70.dll';
EXEC sp_addextendedproc 'sp_OAGetProperty', 'odsole70.dll';
EXEC sp_addextendedproc 'sp_OAMethod', 'odsole70.dll';
EXEC sp_addextendedproc 'sp_OASetProperty', 'odsole70.dll';
EXEC sp_addextendedproc 'sp_OAStop', 'odsole70.dll';
EXEC sp_addextendedproc 'xp_regaddmultistring', 'xpstar.dll';
EXEC sp_addextendedproc 'xp_regdeletekey', 'xpstar.dll';
EXEC sp_addextendedproc 'xp_regdeletevalue', 'xpstar.dll';
EXEC sp_addextendedproc 'xp_regenumvalues', 'xpstar.dll';
EXEC sp_addextendedproc 'xp_regread', 'xpstar.dll';
EXEC sp_addextendedproc 'xp_regremovemultistring', 'xpstar.dll';
EXEC sp_addextendedproc 'xp_regwrite', 'xpstar.dll';
GO
最佳實務:SQL Server 2005 以上版本已內建 sp_configure 'xp_cmdshell' 開關,預設關閉。新版本應優先使用 CLR 整合或 Agent 作業替代危險擴展程序功能。