SQLSERVER估計是為了安裝或者其它方面,它內置了一批危險的存儲過程。能讀到注冊表信息,能寫入注冊表信息,能讀磁盤共享信息等等……各位看到這兒,心裡可能會在想,我的網站中有其它的代碼,又不像查詢分析器那樣能直接將結果輸出。給你這個權限,也不能怎麼樣,還是看不到信息。如果各位這樣想就大錯特錯了。提示一下,如果攻擊者有CREATE TABLE的權限,那麼創建一個臨時表,然後將信息INSERT到表中,然SELECT出來,接著跟數字進行比較,讓SQL SERVER報錯,那麼結果就全出來了……所以我們要報著寧錯殺,不放過的態度進行修補。
先來列出危險的內置存儲過程:
xp_cmdshell
xp_regaddmultistring
xp_regdeletekey
xp_regdeletevalue
xp_regenumkeys
xp_regenumvalues
xp_regread
xp_regremovemultistring
xp_regwrite
ActiveX自動腳本:
sp_OACreate
sp_OADestroy
sp_OAMethod
sp_OAGetProperty
sp_OASetProperty
sp_OAGetErrorInfo
sp_OAStop
以上各項全在我們封殺之列,例如xp_cmdshell屏蔽的方法為:
sp_dropextendedproc 'xp_cmdshell'
如果需要的話,再用
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
進行恢復。如果你不知道xp_cmdshell使用的是哪個.dll文件的話,可以使用
sp_helpextendedproc xp_cmdshel
來查看xp_cmdshell使用的是哪個動態聯接庫。另外,將xp_cmdshell屏蔽後,我們還需要做的步驟是將xpsql70.dll文件進行改名,以防止獲得SA的攻擊者將它進行恢復。