勿让SQL Server成帮凶
2015-03-18■
■
单位的某台服务器遭到了黑客入侵,黑客对运行在其中的网站进行了非法修改,造成了数据丢失的情况。幸好之前进行了数据备份,才恢复了网站的运行。事后经过分析,找到了黑客入侵的通道——原来该网站采取是ASP.NET+MS SQL Server结构,由于开发者存在疏忽,对黑客防范的安全性不高,致使某些页面存在注入漏洞,黑客对该网站检测时,发现了上述漏洞,通过手工注入猜测或者使用啊D等注入工具,对网站进行了渗透,通过数据库差异备份技术,得到了WebShell接口,通过相应的提权操作,获得了更大的操作权限,进而控制了整台服务器。
黑客入侵手段浅析
我们知道,对于网站来说,所有的数据全部存放在后台数据库中,一般我们使用的是Access或者MS SQL Server数据库。注入技术对后者危害最大,如果该数据库连接用户的名称为SA,那么黑客只需借助一个注入点,就可以控制整台服务器。即使数据库的连接用户是DB_Owner,黑客同样可以或者Web Shell接口。例如,黑客使用数据库差异备份技术,就可以将ASP木马上传到网站中,进而获得WebShell接口,来执行各种命令,对网站进行更深层次的入侵。例如,对于存在注入漏洞的网址“http://www.xxx.net/news_list.aspx?typeid=109”来说,黑客使用专业工具对其进行检测时,就会发现其存在注入漏洞,并让黑客获得访问数据库的SA权限或DB_Owner级别权限。
在本例中,黑客获得DB_Owner级别的访问权限。接下来,黑客会借助工具尝试列目录来找到网站物理路径。能否找到网站的真实路径,是黑客入侵能够得手的关键点。当获取实际路径后,黑客就可以通过数据库差异备份实施入侵了。其惯用手法是先在MS SQL Server数据库中创建一个表,例如访问网址“http://www.xxx.net/news_list.aspx?typeid=109’;drop table [tk_tmp];create table[dbo].[tk_tmp]([cmd][image])”等,然后执行数据库备份操作,接着将一句话木马(例如“<%execute(request(“1”))%>”等,当然,实际采取的是其16进制格式)插入到预设上述创建的表中。最后执行数据库差异备份,将备份文件(即ASP木马文件)存放到指定的路径中,该路径位于网站物理路径之内。操作完成后,删除上述数据表(例如访问网址“http://www.xxx.net/news_list.aspx?typeid=109’;drop table[tk_tmp]--”),扫除入侵痕迹。黑客接下来使用一句话木马的客户端连接预设的上述网页地址,就可以轻松获得WebShell接口了。
禁止数据库备份,防止黑客入侵
了解了黑客的入侵手段后,对网站相关文件进行修改,就可以堵住非法注入通道。不过,百密必有一疏,面对复杂的网站结构,难免出现这样或者那样的问题。因此,需要禁止黑客利用数据库差异备份技术,对发起的网络攻击,才是根本解决之道。要堵住该漏洞,可以采取多种手段,其中最重要的是禁用数据库备份功能,在MS SQL Server企业管理器中,在其左侧打开“SQL Server组”→“(Local)”→“数据库”项,在窗口右侧显示数据库列表信息。在和网站关联的数据库右键菜单上点击“属性”项,在弹出窗口中的“权限”面板中可以看到,针对不同的用户/角色,可以控制创建表,创建视图,备份DB,备份日志等权限。在默认情况下,Public或者其它用户/角色账户拥有全部权限,这就为数据库安全带了隐患。因此,选中和网站数据库对应的用户/角色,在其对应的“备份DB”,“备份日志”列中点击,使其出现红叉标记,就禁止了该账户上述权限。我们可以对其测试一下,在MS SQL Server内置的查询分析器选择网站数据库,执行备份指令“declare@a sysname select @a=db_name() backup database @a to disk=’d: k’”,MS SQL Server就会弹出禁止备份的提示信息。
禁止创建表操作,防止黑客上传木马
当然,如果单纯禁用了数据库备份功能,多少显得有些简单粗暴。因为作为网管员,是需要经常对数据库进行备份的。如果禁用了备份功能,恐怕就连网管员自己也无法备份了。根据对黑客入侵手段的分析,不难看出黑客必须先在数据库中创建一个临时数据表,才可以打开入侵的通道。“Create Table”是创建数据表必须用到的命令。如果禁用了数据表创建动作,黑客就无计可施了。而且这对网站运行没有任何影响,因为在网站创建时,的确需要创建各种数据表,但是网站运行成功后,基本就不再创建数据表。当然,如果对网站进行升级的话,涉及到新表的创建,还是需要使用该操作的。根据以上操作,在MS SQL Server企业管理器中打开对应数据库的属性窗口,在“权限”面板中选择和网站数据库对应的用户/角色账户,在其对应的“创建表”列中点击,使其出现红叉标记,禁用创建表的权限。之后在在MS SQL Server内置的查询分析器选择网站数据库,执行诸如“Create Table Tktmp(Tkname nvarchar(200))”等命令创建数据表时,MS SQL Server就会提示拒绝创建数据表操作。
创建NoDown表,禁止非法访问
禁用了数据表的创建操作,并不能高枕无忧。因为黑客对网站的探测是全方面的,前面已经谈到,黑客执行数据库差异化备份获得WebShell的关键是取得网站的物理路径,如果黑客通过别的手段获得了网址物理路径,并探测到数据库中表和字段信息,完全可以将一句话木马插入到某个表的某个字段中,然后进行数据库备份,同样可以达到目的。例如,可以在查询分析器中执行“insert into [table](ziduan)value (0x一句话木马的16进制代码))”等语句,可以看到成功的将一句话木马插入到了某个表的指定字段中。接着黑客会使用“Backup Database”命令备份网站数据库,之后通过浏览器访问备份出来的ASP文件,同样可以获得WebShell。该如何防御这种入侵伎俩呢?
我们可以借助于在数据库中创建“nodown”表的办法来应对。在查询分析器中执行“Create Table [dbo].[nodown]([tkqwe] image);Insert into[dbo].[notdown](tkqwe)value(0x3C25)” 命 令,就 在网站数据库中创建了名为“nodown”的数据表,在其中包含“tkqwe”字段,其类型为“image”,并在其中插入了“0x3c25”的数据,“3c25”就是“<%”的十六进制内容。
为了防止黑客随意操作该表,需要在MS SQL Server的企业管理器中选择网站数据库,在“表”对象中选择该数据表,在其属性窗口中点击“权限”按钮,在弹出窗口中针对目标用户/角色账户,禁用所有的操作命令,包括Select,Insert,Update,Delete 等。 接着重复上述测试操作,将一句话木马插入到某个表中的某个字段中,然后将数据库备份到网站指定路径中,得到包含ASP木马的ASP文件。当客户端使用浏览器访问该ASP文件时,就会出现“编译器错误,缺少语句”等信息。类似的,使用差异备份方式,执行一句话木马的插入和备份操作,在客户端访问木马是同样出现上述错误提示,让黑客无法获得WebSHell。
其实,上述技术同样适用于Access数据库,在基于ASP+Access结构的网站中,管理员最担心的是黑客暴库技术,直接下载Access数据库,这样网站几乎没有秘密可言。为了防止非法下载数据库,可以在Access数据库中创建名为“notdown”的数据表,其中的字段类型为“OLE对象”,内容就是“0x3c25”。按照ASP的语法特点,如果存在“<%”而没有对应的“>%”,在运行ASP文件时就会出现错误。这样就可以保护Access数据库不被非法卸载了。根据以上分析,通过采用创建“nodown”数据表,可以堵住数据库备份或者差异备份所产生的漏洞。禁用数据库的“Create table”命令,可以禁止创建数据表,防止黑客读取磁盘目录获得网站真实路径。禁用数据库的“备份日志”功能,可以屏蔽和数据库备份有关的漏洞。将上述三点联合起来使用,黑客就无法通过数据库备份技术来创建WebShell了。