Защита 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 показал себя с лучшей стороны, отфильтровав все опробованные комбинации и кодировки.