设为首页
加入收藏
帮助中心
首页 | 红盾通告 | 信息中心 | ASP技术 | 数据库 | 网页设计 | 网管专栏 | OICQ攻略 | 墨客频道 | 网站运营 | 论坛社区
当前位置:首页 >> 数据库 >> SQL Server >> 正文
最新信息
·打造抵御SQL注入攻击的MSS…
·10个保护SQL Server 2000安…
·sql server安全设置攻略
·SQL Server安全设置清单列…
·使用 SQL Server 时需要经…
·SQL中触发器实例讲解
·触发器与存储过程互调
·SQL SERVER的安全隐患:触…
·SQL-SERVER触发器
·SQL2005中部署.net 3DES加…
资料搜索
热点信息
·如何压缩SQL Server 2000数…
·日志文件满而造成SQL数据库…
·SQL Server不能启动的常见…
·SQL中触发器实例讲解
·SQL SERVER日志清除的两种…
·一种简单的表中删除重复行…
·Sqlserver 优化的方法
·SQL Server数据库开发的二…
·SQL Server 2000 SP4发布
·10个保护SQL Server 2000安…
推荐信息
·打造抵御SQL注入攻击的MSS…
·SQL Server数据库开发的二…
·Sqlserver 优化的方法
·SQLServer吞噬的内存解决办…
·SQL SERVER日志清除的两种…
·如何压缩SQL Server 2000数…
·SQL Server 2000 SP4发布
·10个保护SQL Server 2000安…
·SQL Server安全设置清单列…
·一个将数据库里面的内容生…



Google
 
打造抵御SQL注入攻击的MSSQL服务器
〖编辑:Cloudy | 浏览:人次〗

MS SQL SERVER的安全性问题一般是由于配置不当而引起,攻击者可通过这样的配置获得很高的权限来执行SQL指令(如:sp_addlogin,xp_subdirs的存储过程),配置一台安全可靠的MS SQL SERVER对你的网站整体安全会起到关键性作用!让我们一起来看一看:
1.用户权限分布
用户分配的权限有两种:
(1)网络空间提供商提供的MS SQL账号,一般这类型账号的权限是db_owner,也就是数据库所有者,拥有管理个人数据库文件的所有权限,针对自己的那个库文件,无法跨越别人的库文件,针对MASTER还有一定的权限。
(2)主机托管,这类型的主机的MS SQL的权限,有很大一部分能达到SYSADMIN服务器角色组,相对来说这类型网站,被入侵的几率达到99%。
权限的安全合理配置是至关重要的,对于使用网站程序调用SQL数据库的配置,更加重要。首先,用于程序连接数据库的用户应拒绝使用服务器角色组成员,应使用数据库用户角色组的成员,最好的方法是只给予db_reader,db_writer权限,遇到有需要备份的用户请另行新建用户——注意:只要有备份权限就可以通过BACKUP得到WEBSHELL!使用db_redaer,db_wirter不能直接用SQL指令建表,但是对于网站的安全也起到了至关重要的作用,入侵者无法使用create talbe,想进一步获取服务器信息,无处保存。那当然,低权限也会给入侵者带来读表的权限,所以说合理的数据库权限,给你的网站安全加了一道墙。


2.数据库存储过程的分配
删除所有对数据库可有可无的存储过程、对注册表操作的扩展进程:
Xp_regaddmultistring
Xp_regdeletekey
Xp_regdeletevalue
Xp_regenumvalues (通过它可获得所以网页目录)
Xp_regread (对Public可以执行) (通过它可获得默认网页根目录,“\”)
Xp_regremovemultistring
Xp_regwrite
很多人只留意到这几部分,还有一组:
xp_instance-regaddmultistring
xp_instance_regdeletevalue
xp_instance_regenumkeys
xp_instance_regread
xp_instance_regremovemultistring
部分重要的存储过程(以下的这些存储进程使用的权限达到DBO以上):
xp_cmdshell(现在几乎所有的服务器都通杀了)
xp_dirtree (查看目录树,由些了解你目录的
xp_subdirs (用起来就跟DIR C:\一样,不过显示的只是目录)
xp_fileexist,用来确定一个文件是否存在。
xp_getfiledetails,可以获得文件详细资料。
sp_OACreate (通过它,危害很得更大,但是要有有SYSADMINS权限才可能使用)
sp_OAGetErrorInfo
sp_OAGetProperty
sp_OAMethod
sp_OASetProperty
sp_SetProperty
sp_OAStop
使用下面的存储过程:
xp_makecab(dbo.xp_makecab 'c:\test.cab','mszip',1,'C:\Inetpub\wwwroot\SQLInject\login.asp',
'C:\Inetpub\wwwroot\SQLInject\securelogin.asp')
如果入侵者使用conn.asp,dbconn.asp,databaseconn.asp这类的配置文件,就能找出目录,再用上面的命令就可以把你的程序打包再下载,
你的SQL密码将被一览无疑(建议连接密码文件加密):
xp_makewebtask (用WEB作业得到WEBSHELL)
xp_runwebtask
xp_readerrorlog(读取出错的记录,但我们可能它来读取文件exec master.dbo.xp_readerrorlog 1,'c:\inetpub\wwwroot\dvbbs\conn.asp')

3. 程序的安全
程序的安全问题危害到了MS SQL,下面是一些注意事项:(1)书写程序,带值输入应详细过滤如(',;,=,update,select,insert,create,",--, exec, execute等等)用来执行指令的关键字。有人已经研究出如果避过'分号来得到权限,但是如果你有语句中加入:
(if instr(request("id"),",")>0 or instr(request("id"),"insert")> or instr(request("id"),";")>0 then '根据以上提供的那些得、重复加上,这些举例)
response.write "<script language=script>javascript:history.go(-1);</script>
response.end
end if
)
发现这些字符就跳回来出的页面,使得攻击者无法判断信息是否正确,通过页面变量直接取值的,请使用request.Querysring,可防止入侵者使用POST:
if instr(request.querysring("id"),",")>0 or instr(request.querystring("id"),"insert")> or instr(request.querystring("id"),";")>0 then '根据以上提供的那些得、重复加上,这些举例)
response.write "<script language=script>javascript:history.go(-1);</script>
response.end
end if
(2)改掉预设的WEB虚拟路径,不要使用IIS装好的预设(系统所在碰碟)\Inetpub\wwwroot路径,网页目录最好不要放在C盘。
(3)利用 On Error Resume Next 排除网页出错,或使用:
if Err.Number<>0 then
response.write redirect url
end if
重定向到你指定的系统页面删除或修改默认的出错页面(重点是500出错页面),修改默认出错页面,让入侵者无法参考出错信息。

4.系统的配置
(1)使用防火墙关闭TCP 1433/UDP 1434端口对外连接
(2)升级最新的补丁(关注微软发布的补丁文件,是备及时修改,最新MS SQL 2000 SERVER有SP4补丁了)
(3)检查系统的是否存在弱口令用户,一旦出现就要及时修改密码。
最后,网站的安全还是要靠广大程序来共同维护,一时麻痹大意思将你的网站很大的灾难,SQL INJECTIONS可谓真是防不胜防,这些方面也不单单是MS SQL,包括ORACLE、SYBASE、MYSQL等等,希望能创造出好的网络环境。


录入时间:2008-04-18 22:43:44 [打印本页] [关闭窗口] [返回顶部]
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

Copyright © 2006-2008 0733168.Com Inc All Rights Reserved
关于我们 | 广告合作 | 联系我们 | 法律声明 | 友情链接 | 意见反馈
本站所收录信息、社区话题、及本站所做之广告均属其个人行为,与本站立场无关
湘ICP备06008436号