跨站脚本 过滤不完的恶梦,又有新攻击语法!

跨站脚本攻击(Cross Site Scripting,简称XSS,亦翻为跨网站的入侵字串)又有新的攻击语法!此次触发恶意脚本不需要用到script 标签(譬如<script>alert(1)</script>),也不用javascript 协定(譬如javascript:alert(1)),而是8 月26 日所揭露的

<isindex>是一个很早就有但普遍少用的标签,其功能与<form>、<input>、<textarea>,以及<select>类似,都可供使用者输入资料。onerror属性也是鲜为人知。
各家浏览器在实现HTML的支援度不尽相同,各国语系又对编码有所差异,这些都使得跨站脚本攻击(XSS)的攻击语法千变万化,也让骇客更能规避掉不少治标的防护机制,像是WAF解决方案,毕竟新的攻击手法就要新的规则(好加在我们家的WAF可以帮你生规则,请参考你期望的WAF是? XD),源码检测才是治本的作法阿,从Web应用程式端利用编码、过滤等方式让这些奇奇怪怪的攻击语法全部缴械!(请参考谈源码检测: CodeSecure的架构与技术) 我们在各个常见浏览器平台(Microsoft Internet Explorer、Mozilla Firefox、Opera,以及Google Chrome)的测试结果是,这个跨站脚本攻击(XSS)新攻击语法仅适用于IE系列的浏览器(含最新的IE8)。注:我们在下列示范中所采用的alert(1)字串可换成各种恶意脚本,而并非跨站脚本攻击(XSS)只能做到跳出一个视窗打招呼。

攻击语法

稍加调整甚至不需要定义src属性也可成功:

跨站脚本攻击(XSS)不亏是名列最新 OWASP Top 2007(2007年OWASP十大Web资安漏洞)的榜首,「简单好用、防不胜防」!

简单来说,跨站脚本攻击(XSS)的基本精神就是骇客在HTML文件中安插网页脚本语言(譬如JavaScript或VBScript),让受骇方的浏览器在浏览网页时进而去执行。这延伸两个讨论议题:
1.为何骇客能够在HTML文件中安插这些脚本?
在Web 2.0的时代,大部分的网页或多或少都需要产生动态内容,都需要与使用者互动,一旦使用者所提供的资料(譬如恶意脚本字串)有机会成为动态输出的HTML内容的一部份时,这样恶意脚本就被成功地安插进原本合法无恶意的HTML文件了。这也是为何许多客户最后选择从源码检测着手,揪出这些进入点与输出点,治本地解决跨站脚本攻击(XSS)。

2.为何浏览器会去执行这些脚本?
浏览器只是如实地遵循W3C (World Wide Web Consortium)所制定的 HTML标准(目前最新版本为 HTML 4.01),正确地支援各语法标签应表现的样式与行为,因此当应该执行脚本时,就会执行这些脚本,尽管他们可能是恶意的,包括偷取Cookie、置换网页、转址、攻击其他网站等。

本文摘自网络由网络安全攻防研究室(www.91ri.org) 信息安全小组收集整理.转载本文请著名原文地址及原作者版权信息。