黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客安全 >> 正文
·完美空间提供500M免费AS04-10·企业安全之YY内网准入以04-09
·企业安全之意识与策略04-09·剑走偏锋:IIS漏洞利用04-09
·我来免费网提供100M免费04-09·1122mb.com提供20G超大免04-08
·映像劫持与反劫持技术04-07·让所有"暴力删除工具"无04-07
·入侵88red系统的详细过程04-07·Sql Injection脚本注入终04-07
·vbs+delphi 反弹后门生成04-07·飞讯网提供100MB免费PHP04-07
·突破SQL注入攻击时输入框04-04·结合内核和病毒技术的最04-04
·Real Player rmoc3260.d04-04·亿万网络今月最后为您提04-04
·php+mysql 5 sql inject04-03·Real Player rmoc3260.d04-03
·oblog文件下载漏洞04-03·免费啦提供1G-2G免费全能04-03
·完全解析网页后门和挂马04-02·一句话开3389(只测试过04-02
·萧萧免费空间网提供100M04-02·谷道免费空间网提供1G免04-01
·从本地入手解决双线路由03-31·sablog 1.6 多个跨站漏洞03-31
·富文本编辑器的跨站脚本03-31·Cookie注入是怎样产生的03-31
[推荐]打造抵御SQL注入攻击的MS SQL服务器
      ★★★★★

打造抵御SQL注入攻击的MS SQL服务器

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-10-23 14:51:15
    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等等,希望能创造出好的网络环境。
文章录入:cainiaowang    责任编辑:cainiaowang 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886