反黑风暴-第24章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
步骤04在设置完毕后,单击【生成】按钮,即可在程序目录下生成一个名为“1。js”的网页文件。将后缀名改为“。html”并上传到网站空间中,即刻得到一个网页木马地址,该地址假设为“//xiaotou。/muma。html”。
(3)伪装QQ邮件代码
前面测试时,QQ邮件挂马代码是经过加密的,其效果是在QQ收信阅读页面中嵌入一个百度网页框架。现在要将框架隐藏,并将网页指向上传的网页木马地址,因此要将代码修改为代码:
步骤02编写完成后单击【发送】按钮发送邮件,待发送成功后,当接收者在收到该邮件并进行查看时,就可看到测试效果了,在页面中被嵌入了百度网页。
TOM邮箱与126邮箱是一样的,使用同样的代码就可以进行跨站攻击,具体的操作方法这里就不再赘述了。
第五章 跨站脚本攻击的防范
国内不少论坛都存在跨站脚本漏洞,国外也很多这样的例子,比如,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文件全部删