作者: 佚名, 出处:安全中国, 责任编辑: 张帅, 2008-05-13 10:28
跨站脚本攻击(XSS)与SQL注入如今成为威胁企业数据安全最大障碍,本文将通过跨站攻击实例来为用户介绍跨站脚本攻击(XSS)的来龙去脉。
很多时候在企业网络安全,特别是服务器上数据库安全防范方面需要特别注意,弥补所有漏洞,减少因设置不当带来的入侵事件的发生。然而在实际使用与维护过程中我们经常会听到一个新的名词——“跨站入侵”,那么什么是“跨站入侵”,他是如何产生如何被利用的呢?今天就请读者跟随笔者一起从“跨站入侵”实际攻防战了解他的来龙去脉。
一、什么是“跨站入侵”:
所谓“跨站入侵”就是先在服务器某个站点上完成入侵攻击任务,然后以此站点为跳板为契机扩大攻击入侵对象范围,从而完成针对该服务器以及服务器上每个站点的入侵任务。一般我们遇到最多的“跨站入侵”种类有以下两种,一种是针对虚拟主机的攻击,即入侵虚拟主机上某一个空间对应的站点,然后通过提升权限注入等漏洞完成对该虚拟主机上各个虚拟目录对应站点的入侵;另一种方法则是通过某站点数据库的入侵,然后利用权限提升工具提升数据库操作权限,从而掌握服务器上所有数据库的使用和操作权限。
总之“跨站入侵”就是以某存在漏洞与问题的站点为跳板扩展攻击范围的一种方法,很多时候当我们的目标安全防范和漏洞很少无法直接攻击时可以利用此方法,“曲线救国”的方法也发生在网络安全攻防策略中。
二、寻找跳板入侵网站:
下面笔者就从实际入侵案例出发为各位IT168读者讲解如何寻找跳板网站,这里我们假设要攻击入侵A网站,但是经过扫描和注入漏洞等多个测试没有发现入侵的办法,这时就可以寻找其同一个网段内的其他网站,因为一般来说在同一个网段(即使是公网网段)下的主机往往都是属于同一个企业或公司的。
经过扫描我们定位了与A网站在同一个网段内的B网站,经过分析发现该该网站使用了ASP动态语言建站,并且安全防范级别相对比较低,因此我们决定以此站点为跳板完成入侵A网站的目的。下面我们先来一步步的入侵B网站,只有获得他的主动操作权才能够完成整体攻击任务。
(1)收集目标站点基本信息:
收集入侵站点基本信息是非常重要的,我们需要根据其基本信息选择不同入侵办法。
第一步:检验B网站页面构成情况,确定该站点使用ASP建站,并且判断动态参数值ID=80是数字型的。(如图1)
图1
第二步:了解了建站基本情况以及数字型参数后我们尝试在地址处进行SQL注入测试,在wt_id=25后添加“’”(不含引号)。回车确定后出现数据库报错信息——microsoft old db provider for odbc drivers错误 80040e14。从显示内容我们可以了解到以下有用信息——该站点使用了数据库,数据库类型为Microsoft SQL SERVER。(如图2)
图2
第三步:接下来按照经典注入模式输入XXX/news_show.asp?wt_id=25 and 1=1,回车后页面显示一切正常,这更加确定了该站点存在SQL注入漏洞,我们能够通过此漏洞夺取站点管理权限以及数据库读写权限。(如图3)
图3
第四步:当继续输入XXX/news_show.asp?wt_id=25 and 1=2回车后出现“BOF或EOF中有一个是真,或者当前的记录已经被删除,所需要的操作要求一个当前的记录”的错误提示,这进一步证明了SQL注入的可操作性。(如图4)
图4
第五步:接下来我们来通过SQL注入语言让页面告诉我们当前连接该SQL SERVER数据库的帐户信息,通过输入XXX/news_show.asp?wt_id=25 and user>0回车来检测,页面提示出错,信息为“Microsoft odbc sql server driver将nvarchar值AAA转换为数据类型为int的列时发生语法错误。这说明了AAA帐户就是当前连接该SQL SERVER数据库的用户。(如图5)
图5
小提示:
如果通过该指令进行SQL注入时出错信息为将nvarchar值dbo转换为数据类型为int的列时发生语法错误,那么说明当前连接该数据库的帐户为SA帐户,这个帐户的权限是巨大的,我们入侵将变得更加容易,SA帐户就等于服务器上操作系统的administrator管理员权限。
第六步:接下来我们来测试当前AAA帐户连接的数据库名称是什么,输入http://xxx/news_show.asp?wt_id=25 and db_name()>0,错误提示为——Microsoft OLE DB Provider for ODBC Drivers 错误 ’80040e07’ [Microsoft][ODBC SQL Server Driver][SQL Server]将nvarchar值 ’BBB’ 转换为数据类型为int的列时发生语法错误。 这说明当前AAA帐户连接的数据库名称为BBB。(如图6)
图6
第七步:我们继续来判断目标网站数据库类型和版本,通过输入http://xxx/news_show.asp?wt_id=25 and 1=(select @@VERSION),显示错误提示为——Microsoft OLE DB Provider for ODBC Drivers 错误 ’80040e07’ [Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 ’Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2) ’ 转换为数据类型为 int 的列时发生语法错误。从这个错误信息我们可以知道目标站点的数据库为Microsoft SQL Server 2000 8.00.2039版,服务器操作系统为Windows NT 5.2 (Build 3790: Service Pack 2),说明该系统为windows 2003 sp2。(如图7)
图7
至此我们就完成了对目标站点的信息收集工作,该服务器使用的是windows 2003操作系统并且安装了最新的SP2补丁,数据库使用的是Microsoft SQL Server 2000 8.00.2039版,该网站使用的数据库名称为BBB,而连接BBB数据库的帐户信息为AAA。