《反黑风暴》

下载本书

添加书签

反黑风暴- 第22部分


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!

国内不少论坛都存在跨站脚本漏洞,国外也很多这样的例子,比如,Google也曾经出现过。这是因为跨站攻击很容易就可以构造,而且非常隐蔽,不易被查觉。下面将针对跨站攻击方式的相关代码进行分析,并给出相应的方法来过滤这些代码。

1.过滤“”标记

通过上面的介绍可以看出,我们的第一个要过滤的就是用户提交的变量中的,这样,用户不就不能按照其意愿产生html标记了。因为跨站脚本攻击最直接的方法,就是完全控制播放一个HTML标记,如输入“alert(〃跨站攻击〃)”之类语句。

要防止这类代码写入网站,最简单的过滤方法就是转换“”标记,从而截断攻击者输入的跨站代码。相应的过滤代码如下:

replace(str;〃〃;〃>;〃)

2.HTML标记属性过滤

上述两句代码可以过滤掉“”标记,攻击者就不能产生自己的HTML标记了。但是,这并不是说我们就可以高枕无忧了,攻击者还是有可能会利用已经存在的属性,如攻击者可以通过插入图片功能,将图片的路径属性修改为一段Script代码。攻击者插入的图片跨站语句,经过程序的转换后,变成了如下形式。



上述这段代码执行后,同样会实现跨站入侵,而且很多HTML标记属性都支持“javascript:跨站代码”的形式。看来光过滤是没用的,用户利用已有的HTML标记照样跨站不误。所以有很多的网站程序也意识到了这个漏洞,对攻击者输入的数据进行了如下转换:

Dimre

Setre=newRegExp

re。IgnoreCase=True

re。Global=True

re。Pattern=〃javascript:〃

Str=re。replace(Str;〃javascript:〃)

re。Pattern=〃jscript:〃

Str=re。replace(Str;〃jscript:〃)

re。Pattern=〃vbscript:〃

Str=re。replace(Str;〃vbscript:〃)

setre=nothing

因为恶意用户使用的是javascript这样的属性,所以我们控制好用户的输入中不要存在javascript:和vbscript:这样的内容就行。在这段过滤代码中用了大量replace函数过滤替换用户输入的“javascript”脚本属性字符,一旦用户输入语句中包含有“javascript”、“jscript”或“vbscript”等,都会被替换成空白。

(3)过滤特殊的字符:&、回车和空格

只过滤“javascript”、“jscript”或“vbscript”这些关键字还是不保险的,如果用户提交javascript这样形式代码,并转换一部分代码或干脆完全转换就可以逃避检测再次攻击了,攻击者总是能找到一些办法饶过,因此,还要特别关注用户提交的&#字符。

HTML属性的值可支持“&#ASCii”的形式进行表示,如前面的跨站代码可以换成如下代码。



转换代码后即可突破过滤程序,继续进行跨站攻击了。于是,有安全意识的程序,又会继续对此漏洞进行弥补过滤,使用“replace(str;〃&〃;〃&;〃)”代码将“&”符替换成“&;”,于是后面语句便全部变形失效了。但攻击者又可能采用另外方式绕过过滤,因为过滤关键字方式漏洞很多。攻击者可能会构造“”攻击代码。

在这里,“javascript”被空格隔开了,准确的说,这个空格是用Tab键产生的,这样关键字“javascript”就被拆分了。上述过滤代码又失效了,一样可以进行跨站攻击。于是很多程序设计者又开始考虑将Tab空格过滤,防止此类的跨站攻击。

(4)HTML属性跨站的彻底防范

如果攻击者向网站中写入的代码不包含上面提到的任意一种可能会被程序设计者过滤的字符,它仍然可以利用程序的缺陷进行攻击的,所以还不能高兴的太早。因为攻击者可以利用前面说到的属性和事件机制,构造执行Script代码。比如有“”这样一个图片标记代码,执行该HTML代码后可看到结果是Script代码被执行了。

这就是利用事件类XSS代码onerror进行跨站攻击的例子,现在虽然很多程序设计者在网站中对此事件进行了过滤,一旦程序发现关键字“onerror”,就会进行转换过滤。但是,攻击者可利用各种各样的属性进行构造跨站攻击,并不是只有onerror事件一种而已,因此,这是防不胜防的。

例如“”这段代码,这样的事件属性同样是可以实现跨站攻击的。可以注意到,在“src=〃#〃”和“style”之间有一个空格,也就是说属性之间需要用空格分隔,于是程序设计者可能对空格进行过滤,以防此类的攻击。但过滤了空格之后,同样可被攻击者突破。攻击者可能构造“”代码。

这段代码是利用了一个脚本语言的规则漏洞,在脚本语言中的注释,会被当做一个空白来表示,所以注释代码“/**/”就间接达到了原本的空格效果,从而使语句继续执行。

出现上面这些攻击是因为用户越权自己所处的标签,造成用户输入数据与程序代码的混淆。因此,保证程序安全的办法就是限制用户输入的空间,让用户在一个安全空间内活动。其实,只要在过滤了“”标记后,就可以把用户的输入在输出时放到双引号“〃〃”,以防用户跨越许可的标记。

总的来说,要防范跨站脚本攻击,用户需要先转换掉字符,让攻击者不能建立自己的HTML标记,再防范已经有的HTML标记,通过过滤“javascript”和特殊字符“&”可以阻止用户修改标记的属性为script,再通过〃和空格的过滤,使用户不能引发时间机制和重建其他的属性,将用户的输入限制在一个字符串内。

只要做到以上几点,相信就能够躲避跨站脚本的攻击了。

第六章 专家课堂(常见问题与解答)

点拨1:如何测试某个站点存在跨站攻击漏洞呢?

解答:使用代码“alert(‘XSS’)”来检测,是最常见的直接测试脚本系统是否存在跨站脚本攻击的方法。一般情况下,如果这个代码可以正常被插入并执行,就说明站点是存在跨站攻击漏洞的,攻击者此后就可以构造各种代码实现各种功能。如果不能被正常插入并执行,则说明不存在跨站攻击漏洞。

点拨2:若攻击者若直接利用URL编码欺骗发起钓鱼攻击,应如何构造语句?

解答:严格上说,这种利用方式和XSS关系不大,但这种方式最简单,所以很多攻击者都在用。比如,攻击者可以构造如下的URL:

'URL=//。baidu。%2e%69%61%6f%79%75%2e%63%6f%6d'//。baidu。'/URL'

这个URL表面看起来就是百度的一个超级链接,即使小心一些的用户用鼠标指向它或观察源代码也看不出来其中存在的问题,但当用户访问以后,跳转的却是攻击者伪造的页面。

第一章 稍不留意就泄密

在电脑上浏览过的网站、打开的文件、复制的记录、删除的图片等信息,很容易会被不怀好意的人们轻易偷取里面的数据,或从系统中窥探到用户的隐私。

9。1。1用户最近都上过哪些网站

在因特网上,Cookie实际上是Web服务器通过浏览器放在你的硬盘上,用于自动记录用户个人信息的文本文件,包括用户浏览过的网站、停留的时间、用户名和密码等信息。当用户再次打开相同的网页时,IE浏览器便可以从中调用这些已经保存的网页数据,从而达到快速打开网页的效果。Cookie虽然方便了用户上网,但是也会将用户的隐私暴露无遗。就隐私泄露来说,这里只介绍其中的一点——“浏览过的网页”。

这些Cookies文件通常都保存在计算机中的C:DocumentsandSettings用户名Cookies目录中,打开这个文件夹后,可以看到保存的个人信息文件。

这些文件一旦被别有用心的网络攻击者、病毒和木马的传播者利用,就会对用户的系统造成不可估量的危害。因此,为了防止这些危害的发生,用户应每隔一段时间,清除C:DocumentsandSettings用户名Cookies目录中的Cookies记录。

这种方法虽然可以一时将硬盘中的Cookies文件全部删除,但只要用户上网,这些文件又会自动生成。这样,每次删除这些Cookies文件,就显得特别麻烦了。其实,用户完全可以通过对IE进行设置来防止Cookies的入侵。具体操作方法如下:

步骤01打开IE浏览器,选择【工具】→【Inter选项】菜单项,即可打开【Inter选项】对话框。选择【隐私】选项卡,在其中单击【高级】按钮。

步骤02此时,即可打开【高级隐私策略设置】对话框。在其中可以对于每个Cookie都进行“提示”操作,也可以设置为“拒绝”操作。这样,计算机在接收来自服务器的Cookie时将提出警告或完全禁止服务器对Cookie的接收和访问。

用户在访问网站时,IE浏览器还会自动将用户访问过的网页链接保存到系统的“C:Doc

umentsandSettings用户名LocalSettingsHistory”文件夹中,这样用户就可以通过该文件夹中的文件来了解某一个时间段内的所有上网记录。另外,用户打开IE浏览器后,选择【查看】→【浏览器栏】→【历史记录】菜单项,即可在浏览器窗口的左侧显示访问的历史记录。

虽然这些历史记录方便了用户查看上网记录,但也给一些别有用心的人带来了可乘之机。为了避免用户上网隐私的泄露,用户一定要在退出系统前将访问网页的历史记录清除。清除历史记录的方法有两种:一种是在【Inter选项】对话框中清除,另一种是直接进入History文件夹中进行清除。下面介绍在【Inter选项】对话框中清除网页历史记录的方法。

步骤01要完全清除历史记录,可以先打开IE浏览器,选择【工具】→【Inter选项】菜单项,即可打开【Inter选项】对话框。在【常规】选项卡下单击“历史记录”区域中的【清除历史记录】按钮。

步骤02在弹出的提示对话框中单击【是】按钮,即可将访问网页的历史记录全部清除。

若要在History文件夹中清除访问网页的历史记录,其具体操作步骤如下:

步骤01打开【我的电脑】窗口,选择【工具】→【文件夹选项】菜单项,即可打开【文件夹选项】对话框。选择【查看】选项卡,在“高级设置”列表框中选中“显示所有文件和文件夹”复选项。

步骤02单击【确定】按钮返回【我的电脑】窗口。进入C盘下的“C:DocumentsandSettings用户名LocalSettingsHistory”文件夹中,将包含在该文件夹中的所有文件夹全部删除即可。

当用户将这些可能泄露隐私的Cookies和历史记录都删除后,以为这样就可以万事大吉、高枕无忧了。其实,这其中还有一个文件在泄露秘密,它就是index。dat文件。

index。dat文件是一个隐藏文件,它记录着浏览器访问过的网址、访问的时间等信息,本质上就是记录Cookies信息的文件,它是IE临时文件的复本。即使用户从浏览器中清除了网络记录,这个文件依然存在。

用户若要查看这个文件的信息,可使用index。dat文件查看器查看。从网上下载并安装index。dat文件查看器,运行该软件后,则会自动在窗口的列表中显示这个文件的信息。可以看到这个文件中包含了很多用户浏览的网页记录,并没有被彻底删除掉。可以使用“兵刃”工具的“查找”功能在计算机中找到这个文件,切换到管理员身份将其删除。

9。1。2最近浏览过哪些文件

如果黑客利用系统漏洞侵入用户的计算机,就可以从保存的计算机使用记录中发现用户的隐私信息。例如,“我最近的文档”中的记录、最近创建或修改的文件记录、各应用软件打开过的文档、音频与视频文件、压缩文件等。

1。我的文档历史

要查看用户最近编辑、使用过的文件,可单击任务栏上的【开始】按钮,在弹出的面板中选择【我最近的文档】菜单项,在其子菜单中即可自动列出用户最近打开过的文档,包括文本文件、Word文档、压缩文件和图片等。

这些记录的存在不仅占用了一定的硬盘存储空间,而且还会将用户的一些隐私信息泄露出去。因此,用户要及时清除这些记录。

清除我最近的文档中的记录的具体操作步骤如下:

步骤01在桌面任务栏的空白处右键单击,在弹出的快捷菜单中选择【属性】菜单项,打开【任务栏和开始菜单属性】对话框。

步骤02选择【开始菜单】选项卡,单击其中的【自定义】按钮。

步骤03打开【自定义开始菜单】对话框,选择【高级】选项卡,单击“最近使用的文档”区域中的【清除列表】按钮,即可将“我最近的文档”中文档记录删除。

步骤04删除后,【清除列表】按钮即变成灰色不可用状态。再取消勾选“列出我最近打开的文档”复选项。单击【确定】按钮,这样在【开始】→【我最近的文档】菜单项的子菜单中就不会显示打开的文档记录了。

【提示】

在WindowsXP系统中,会把最近访问文档的快捷方式放在“C:DocumentsandSettings用户名Recent中,手工删除它们也能让【我最近的文档】菜单项下的记录为空。

2.最近访问、修改、创建的文件

要想知道用户最近访问了哪些文件,用户可以在Windows资源管理器中搜索最近访问、修改、创建的文件。具体的操作步骤如下:

步骤01打开【我的电脑】窗口,单击工具栏上的【搜索】按钮,在窗口左侧即可显示出“搜索助理”面板。在面板中可以选择要查找的文件类型,如图片、文档或文件夹等,这里选择“图片、音乐或视频”选项。

小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架