Защита Internet Explorer 8 от XSS - Отраженный вариант через внедрение кода
ОГЛАВЛЕНИЕ
Отраженный вариант через внедрение кода
Можно выделить четыре основных ситуации, в которых возможен отраженный вариант атаки Межсайтовое выполнение сценариев:
- внедрение кода в Javascript;
- внедрение кода в тег;
- внедрение кода в параметр тега;
- внедрение кода в HTML.
Далее рассмотрено противодействие Internet Explorer в каждом их этих случаев.
Внедрение кода в Javascript
Данная ситуация очень схожа с DOM-based XSS. Однако код внедряется непосредственно в блок Javascript без использования функций AJAX. Пример уязвимого кода приведен ниже.
Рис. 5 Уязвимый java-script код
В этом случае злоумышленник может передать в качестве значения параметра XSS-значение:
500); alert(document.cookie);//
В результате код в странице приобретет вид:
setTimeout(“writetitle()”, 500); alert(document.cookie);//)
Два символа обратного слеша является комментарием в языке Javascript, поэтому, с точки зрения синтаксиса, здесь все верно. Таким образом, несмотря на фильтр XSS в IE8b2, возможно успешно провести классическую атаку Cross-Site Scripting (см. рис. 6).
Рис. 6 Эксплуатация внедрения java-script кода
Как часто можно встретить внедрение в код Javascript? Практика показывает, что подобные уязвимости – достаточно распространенное явление. По опыту авторов 10-15% Web-приложений, которые содержат уязвимости Cross-Site Scripting, будут содержать в том числе и уязвимость внедрения Javascript кода.
Внедрение кода в тег
Данный вариант уязвимости встречается редко, но сбрасывать его со счетов не стоит. Фильтр XSS в Internet Explorer пропускает конструкции, когда уязвимый параметр к Cross-Site Scripting встречается в следующих вариациях:
<img… $XSS ….>
<font… $XSS ….>
и т.п.
То есть в ситуациях, когда уязвимое значение включено в тег и не является параметром этого тега. В этом случае можно использовать обработчики событий Javascript (onClick(), onMouseover()) для передачи управления коду, используемому для атаки (см. рис. 7).
Рис. 7 Эксплуатация Cross-Site Scripting в тегах
Внедрение кода в параметр тега
Данная ситуация является одним из самых распространенных случаев XSS. Она возникает, когда уязвимый параметр к Cross-Site Scripting встречается в параметре тега:
<img… src=$XSS ….>
<font… size=$XSS ….>
<a… href=$XSS ….>
и т.п.
Тестирование показало, что фильтр Internet Explorer прекрасно справляется с данным видом атак, включая все опробованные комбинации и кодировки.
Внедрение кода в HTML
Классическая ситуация, в которой внедрение происходит непосредственно в HTML, и для проведения атаки необходимо открыть тег. И в этом случае фильтр Internet Explorer показал себя с лучшей стороны, отфильтровав все опробованные комбинации и кодировки.