Подтвердить что ты не робот

Этот ужасающий вектор 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 является одним из 32 первых байтов 2-байтовых последовательностей (0xC0-0xDF) в UTF-8. Поэтому, когда IE анализирует приведенный выше код, он рассмотрит 0xC0 и следующую цитату как последовательность, и поэтому эти две пары элементов FONT станут едиными с "xyz[0xC0]">not </font><font face=" как значением параметра FACE. Второй 0xC0 начнет новую 2-байтную последовательность в качестве значения параметра NOTEXIST, который не цитируется. Из-за символа пробела, следующего за цитатой, 0xE0-0xEF, которые являются первыми байтами трехбайтовых последовательностей, вместе со следующей цитатой и одним пробелом будут считаться значением параметра NOTEXIST.

По существу, определенные байты указывают начало 3-байтового символа в строке UTF-8. Если эти байты пробиваются на веб-страницу, IE будет потреблять следующие два байта, даже если полученные три байта не образуют действительного символа UTF-8. Это может привести к тому, что IE съедает конечные кавычки в атрибутах HTML, разрушая хаос XSS.

В статье рассказывается об IE6, поэтому у меня есть два тесно связанных вопроса:

  • Это еще проблема в более поздних версиях IE?
  • Если да, существует ли на стороне клиента способ избежать этого? Другими словами, если предположить, что с сервера получена "отравленная" строка, есть ли что-то, что можно сделать на стороне клиента, чтобы предотвратить эту уязвимость?
4b9b3361

Ответ 1

Если я правильно понял уязвимость, он был рассмотрен в 2006 году в Бюллетене по безопасности Microsoft MS06-021.

Уязвимость удаленного выполнения кода существует в том, как Internet Explorer декодирует специально созданный HTML-код HTML с кодировкой UTF-8. Злоумышленник может использовать эту уязвимость, создав специально созданную веб-страницу, которая потенциально может позволить удаленное выполнение кода, если пользователь посетил специально созданный веб-сайт.