网络安全 频道

实例讲解跨站入侵攻防战之攻击篇

  【IT168 专稿】很多时候在企业网络安全,特别是服务器上数据库安全防范方面需要特别注意,弥补所有漏洞,减少因设置不当带来的入侵事件的发生。然而在实际使用与维护过程中我们经常会听到一个新的名词——“跨站入侵”,那么什么是“跨站入侵”,他是如何产生如何被利用的呢?今天就请各位IT168读者跟随笔者一起从“跨站入侵”实际攻防战了解他的来龙去脉。

  一,什么是“跨站入侵”:

  所谓“跨站入侵”就是先在服务器某个站点上完成入侵攻击任务,然后以此站点为跳板为契机扩大攻击入侵对象范围,从而完成针对该服务器以及服务器上每个站点的入侵任务。一般我们遇到最多的“跨站入侵”种类有以下两种,一种是针对虚拟主机的攻击,即入侵虚拟主机上某一个空间对应的站点,然后通过提升权限注入等漏洞完成对该虚拟主机上各个虚拟目录对应站点的入侵;另一种方法则是通过某站点数据库的入侵,然后利用权限提升工具提升数据库操作权限,从而掌握服务器上所有数据库的使用和操作权限。

  总之“跨站入侵”就是以某存在漏洞与问题的站点为跳板扩展攻击范围的一种方法,很多时候当我们的目标安全防范和漏洞很少无法直接攻击时可以利用此方法,“曲线救国”的方法也发生在网络安全攻防策略中。

  二,寻找跳板入侵网站:

  下面笔者就从实际入侵案例出发为各位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。

 

  (2)入侵跳板站点:

  接下来我们利用获得的有用信息来完成入侵跳板站点的目的。

  第一步:由于我们已经知道了目标站点存在SQL注入漏洞而且也获得了连接该数据库的帐户以及数据库名,因此可以直接使用MSSQL注入工具来完成入侵工作,在注入地址添写扫描到的存在注入漏洞的地址,然后选择“列数据库信息”,我们会在工具下方看到数据库名称,当前用户信息全部显示出来,而当前权限是DB_owner,虽然不是SA高级帐户权限,但是这个权限也足以完成入侵工作了。接下来继续选择“列网站目录”,马上我们能够看到C盘下的各个目录,这个可是服务器上C盘的具体目录信息了。(如图8)

图8

  第二步:同样选择D盘,然后选择“列网站目录”按钮,工具会将网站服务器上D盘各个目录罗列出来。(如图9)

图9

  第三步:选择上方的列数据库表后我们可以爆破出该数据库下的所有数据表,我们还可以针对对应表里面的各个字段进行检测,例如笔者发现数据库下有名为admin_pres的表,这个可能是管理员帐户信息的存放地点,因此针对此表字段进行了检测获得了对应的字段信息。(如图10)

图10

  第四步:勾选所有检测字段,然后针对这些字段具体值进行破解,经过检测和枚举后我们就能够看到明文显示的帐户ID信息以及登录信息甚至是密码等信息了。(如图11)

图11

  第五步:当然通过工具的数据库备份功能我们可以直接把站点数据库文件下载到本机,也可以利用注入地址完成木马上传的目的,通过木马工具实现WEBSHELL权限,由于篇幅关系这里就不详细说明了,笔者在以前的文章中进行过详细讲解。我们只需要按照工具提示一步步完成操作即可。(如图12)

图12

  第六步:接下来再利用wis工具查找目的站点的管理登录地址即可,经过扫描发现了登录地址为/login.asp。(如图13)

图13

  第七步:输入对应的登录地址后再通过我们之前扫描破解出来的管理员帐户名与密码就可以顺利完成站点的后台管理功能了。(如图14)

图14

  至此我们就完成了对跳板站点B的入侵工作,接下来就要依靠“跨站入侵”法来完成对A站点的攻击了。

  小提示:

  什么是DB_owner权限?DB是database的缩写,owner即拥有者的意思。它是指某个数据库的拥有者,它拥有了对数据库的修改、删除、新增数据表,执行大部分存储过程的权限。但是涉及到一些系统敏感操作的权限不具备,这也是它与SA权限的唯一区别。

 

  (3)跨站入侵可能性的判断:

  虽然我们拿到了B站点的管理权限但是是否可以利用他完成对A站点的“跨站入侵”呢?这就需要对跨站入侵可能性进行判断了。

  首先在对SQL注入地址进行检测时可以通过输入http://XXX/news_show.asp?wt_id=25 and (select count(*) from master.dbo.sysdatabases where name>1 and dbid=6) <>0

  来检测DBID是6数据库的名称,出现错误提示为“[Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 'Northwind' 转换为数据类型为 int 的列时发生语法错误”,我们依次修改DBID值发现不同值对应数据库名称不同,一直到DBID=25时才出现了没有数据库的错误提示,这说明B网站对应数据库那台服务器上存在了25个不同的数据库,很有可能对应25个不同的网站。

  接下来我们在B网站服务器上查看每个目录,在c:\inetpub目录里找到了XXX的字样,这个字样和我们要攻击的A网站域名一样,只不过把“.”更换为“_”而已,由此判断该服务器上存储的是包括A站点,B站点以内的多个站点的数据库及网站资源。(如图15)

图15

  通过两步检测我们断定跨站入侵是可能的,利用B站点的有限资源是可以达到入侵A站点的目的的。

 

  (4)从数据库入手实现“跨站入侵”:

  下面我们来看看如何实现跨站入侵的目的,在B站点实际上也是A站点所在的服务器上查看各个目录,终于在D盘DATA目录里找到了A站点于2007年4月份备份的数据库文件,当然该目录里还保存着我们之前提到的其他二十多个网站的数据库资源。(如图16)

图16

  我们可以将这些数据库文件下载并破解有用信息,从而获得管理员帐户再结合扫描管理登录地址达到管理A网站的目的。

  当然我们也可以利用NBSI这个SQL注入攻击工具来连接B网站,然后再通过其“跨站”功能获得同一个服务器上其他数据库的基本信息。(如图17)

图17

  我们可以利用找出的帐户直接查看MASTER表中的基本信息,从而直接破解出数据库SA管理员的帐户信息。

  除了以上提到的两个方法外我们还可以利用工具来下载网站文件进行继续分析,当然这是需要花费足够时间的,需要我们查看服务器上每个目录每个文件来判断哪个目录才是真正保存站点文件的目录。(如图18)

图18

 

  三,总结:

  至此我们就完成了针对B网站的攻击并利用其实现跨站入侵功能完成了对A站点的完全控制,总之跨站入侵是非常可怕的,也是比较难防范的,很多有经验的网络管理员都会忽视对跨站入侵漏洞的防范,毕竟在多个网站并存的服务器上很难对所有站点进行较高级别的安全防范设置,那么我们该如何操作才能够有效防范跨站入侵攻击呢?由于篇幅关系笔者将在下篇文章——跨站入侵攻防战之防御篇中为各位IT168读者讲解。

0
相关文章