这个可怕的XSS载体在Internet Explorer中仍然是一个问题吗?

Clo*_*boy 16 javascript xss internet-explorer

来自hi.baidu.com/monyer/blog/item/d0f5d8b48fc442758bd4b2a4.html

Char 192是 <font face="xyz[0xC0]">not </font><font face=" onmouseover=alert(192) s=[0xC0]" >available</font>

0xC0是UTF-8中2字节序列(0xC0-0xDF)的32个第一个字节之一.因此,当IE解析上面的代码时,它会将0xC0和以下引用视为一个序列,因此这两对FONT元素将成为一个具有"xyz[0xC0]">not </font><font face="FACE参数的值.第二个0xC0将启动另一个2字节序列作为未引用的NOTEXIST参数的值.由于引号后跟一个空格字符,0xE0-0xEF是3字节序列的第一个字节,连同下面的引号和一个空格字符将被视为NOTEXIST参数的值.

实质上,某些字节表示UTF-8字符串中3字节字符的开头.如果这些字节进入网页,即使得到的三个字节不构成有效的UTF-8字符,IE也会占用接下来的两个字节.这可能会导致IE占用HTML属性中的结尾引号,从而造成XSS风格的破坏.

这篇文章是关于IE6的,所以我有两个紧密耦合的问题:

  1. 这在IE的后续版本中仍然是一个问题吗?
  2. 如果是这样,是否有一种纯粹的客户端方法来避免它?换句话说,假设从服务器收到"中毒"字符串,是否有任何可以在客户端完成以防止此漏洞?

Ben*_*ton 6

如果我正确理解了此漏洞,则会在2006年的Microsoft安全公告MS06-021中解决.

Internet Explorer对特制的UTF-8编码HTML进行解码的方式中存在一个远程执行代码漏洞.攻击者可以通过构建特制网页来利用此漏洞,如果用户访问特制网站,该网页可能允许远程执行代码.