第 四步是修改 SQL SERVER 内置存储过程。 SQL SERVER 估计是为了装置或者其它方面,内置了一批危险的存储过程。能读到注册表信息,能写入注册表信息,能读磁盘共享信息等等 ...... 各位看到这儿,心里可能会在想,网站中有其它代码,又不像查询分析器那样能查接将结果输出。给你这个权限,又不能怎么样,还是看不到信息。如果各位这样想就 大错特错了提示一下,如果攻击者有 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
将有
安全问题的 SQL 过程删除 . 比较全面 . 一切为了平安 !
删除有安全隐患的扩展 :
use master
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
恢复扩展
use master
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 查询分析器 "
点击菜单上的 --" 查询 "--" 执行 " 就会将有安全问题的 SQL 过程删除 ( 以上是 7i24 正版用户的技术支持 )
更改默认 SA 空密码 . 数据库链接(超级链接是指从一个网页指向一个目标的连接关系)不要使用 SA 帐户 . 单数据库单独设使用帐户 . 只给 public 和 db_owner 权限 .
数据库不要放在默认的位置 .
SQL 不要装置在 PROGRAM FILE 目录下面 .
以 上各项全在封杀之列,例如 xp_cmdshell 屏蔽的方法为: sp_dropextendedproc 'xp_cmdshell' 如果需要的话,再用 sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 进行恢复。如果你不知道 xp_cmdshell 使用的哪个 .dll 文件的话,可以使用 sp_helpextendedproc xp_cmdshell 来查看 xp_cmdshell 使用的哪个动态联接库。另外,将 xp_cmdshell 屏蔽后,还需要做的方法是将 xpsql70.dll 文件进行改名,以防止获得 SA 攻击者将它进行恢复。
做到这儿, SQL SERVER 就基本上平安了但是信息还是能一样的外泄。终究 SELECT 无法取消的除非你网站用的 HTML SQL INJECTION 防范还需要我这些顺序员来注意,这才是治本之法。高级设置篇再接着对 SQL SERVER 平安做下一步的分析。该篇文章如果有什么错漏,请大家多多包涵。谢谢 ......