為強化 SQL Server 2000 安全性,建議移除可呼叫 Shell、操作登錄、存取 COM 元件等高風險擴展預存程序。以下提供完整刪除與還原腳本,需以系統管理員帳號在「查詢分析器」執行。
use master
go
exec sp_dropextendedproc 'xp_cmdshell' -- 呼叫命令列,極高風險
exec sp_dropextendedproc 'xp_enumgroups'
exec sp_dropextendedproc 'xp_loginconfig'
exec sp_dropextendedproc 'xp_enumerrorlogs'
exec sp_dropextendedproc 'xp_getfiledetails'
exec sp_dropextendedproc 'sp_OACreate' -- OLE Automation 系列
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_regremovemultistring'
exec sp_dropextendedproc 'xp_regwrite'
drop procedure sp_makewebtask
go
-- exec sp_dropextendedproc 'xp_dirtree' -- 刪除後無法新建/附加資料庫
-- exec sp_dropextendedproc 'xp_regread' -- 刪除後還原資料庫輔助功能失效
-- exec sp_dropextendedproc 'xp_fixeddrives' -- 刪除後無法還原資料庫
生產環境若需備份還原功能,請保留上述三個擴展,或於維護窗口臨時還原。
use master
go
exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
exec sp_addextendedproc 'xp_enumgroups', 'xplog70.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_regremovemultistring','xpstar.dll'
exec sp_addextendedproc 'xp_regwrite', 'xpstar.dll'
exec sp_addextendedproc 'xp_dirtree', 'xpstar.dll'
exec sp_addextendedproc 'xp_regread', 'xpstar.dll'
exec sp_addextendedproc 'xp_fixeddrives', 'xpstar.dll'
go
master..sysobjects 確認高危擴展未被重新註冊。