2011-05-08 19 views
16

從hi.baidu.com/monyer/blog/item/d0f5d8b48fc442758bd4b2a4.html這個可怕的XSS矢量在Internet Explorer中仍然是個問題嗎?

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

將0xC0是2字節序列的32個第一字節中的一個(0xC0-0xDF)在UTF-8。所以當IE解析上面的代碼時,它會將0xC0和後面的引用看作一個序列,因此這兩對FONT元素將會以"xyz[0xC0]">not </font><font face="作爲FACE參數的值。第二個0xC0將啓動另一個2字節的序列作爲未引用的NOTEXIST參數值。由於引用後面有一個空格字符,所以3字節序列的第一個字節0xE0-0xEF,連同以下引號和一個空格字符將被視爲NOTEXIST參數的值。

本質上,某些字節表示UTF-8字符串中的3字節字符的開始。如果這些字節進入網頁,即使產生的三個字節不構成有效的UTF-8字符,IE也會佔用接下來的兩個字節。這可能會導致IE在HTML屬性中使用結尾引號,從而導致XSS風格的破壞。

這篇文章是關於IE6,所以我有兩個緊密耦合的問題:

  1. 這仍然是在IE的後續版本的問題嗎?
  2. 如果是這樣,是否有純粹的客戶端方法來避免它?換句話說,假設從服務器接收到「中毒」字符串,是否有什麼可以在客戶端完成以防止此漏洞?
+0

@Karl我很欣賞編輯,但我試圖避免鏈接到該網站,因爲它似乎有點seed。。我不確定有關鏈接到網站的規則。你認爲它應該是鏈接(誠實的問題)? – ClosureCowboy 2011-05-08 15:54:37

+0

頁面確實很多:)我不知道是否有任何規則,所以讓我們不要鏈接它。 – 2011-05-08 16:01:44

+0

可能我不知道實際發生了什麼。但我在IE9的JSFiddle上試過這個,並沒有鼠標懸停。 – sdleihssirhc 2011-05-08 16:49:16

回答

6

如果我正確理解此漏洞,它在2006年的Microsoft Security Bulletin MS06-021處理。

Internet Explorer解碼特製的UTF-8編碼HTML的方式中存在一個遠程執行代碼漏洞。攻擊者可以通過構建特製網頁來利用此漏洞,如果用戶訪問特製網站,該網頁可能允許遠程執行代碼。

+0

+1謝謝你的回答。安全公告的日期是2006/06/13;文章的日期是2006/08/7。此外,[this](http://www.mail-archive.com/[email protected]/msg38279.html)郵件列表中的帖子 - 討論相同的漏洞 - 也從8月份開始**。此外,科技博客上最近與XSS相關的一些討論提到了這個問題,引用了最初引用的文章。這讓我懷疑這個問題是否已經得到解決。可悲的是,我沒有一臺Windows機器來測試它(我不知道如何插入這些無效字節)。 – ClosureCowboy 2011-05-10 00:00:50

+0

時間暗示我的文章是爲了迴應公告而編寫的。 – 2011-05-10 20:58:12