Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
201
Добавлен:
10.05.2015
Размер:
38.2 Mб
Скачать

17.2.2.3. Отраженный вариант

Можно выделить четыре основных ситуации, в которых возможен отраженный вариант атаки Межсайтовое выполнение сценариев:

  • внедрение кода в Javascript;

  • внедрение кода в тег;

  • внедрение кода в параметр тега;

  • внедрение кода в HTML.

Далее рассмотрено противодействие Internet Explorer в каждом их этих случаев.

17.2.2.3.1. Внедрение кода в Javascript

Данная ситуация очень схожа с DOM-based XSS. Однако код внедряется непосредственно в блок Javascript без использования функций AJAX. Пример уязвимого кода приведен на рис. 17.8.

Рис. 17.8.  Уязвимый Javascript код

Источник: Защита Internet Explorer 8. Анализ эффективности [21]

В этом случае злоумышленник может передать в качестве значения параметра XSS-значение:

500); alert(document.cookie);//

В результате код в странице приобретет вид:

setTimeout("writetitle()", 500); alert(document.cookie);//)

Два символа обратного слеша является комментарием в языке Javascript, поэтому, с точки зрения синтаксиса, здесь все верно. Таким образом, несмотря на фильтр XSS в IE8, возможно успешно провести классическую атаку Cross-Site Scripting.

17.2.2.3.2. Внедрение кода в тег

Данный вариант уязвимости встречается редко, но сбрасывать его со счетов не стоит. Фильтр XSS в Internet Explorer пропускает конструкции, когда уязвимый параметр к Cross-Site Scripting встречается в следующих вариациях:

<img… $XSS ….>

<font… $XSS ….>

и т.п.

То есть в ситуациях, когда уязвимое значение включено в тег и не является параметром этого тега. В этом случае можно использовать обработчики событий Javascript (onClick(), onMouseover()) для передачи управления коду, используемому для атаки.

17.2.2.3.3. Внедрение кода в параметр тега

Данная ситуация является одним из самых распространенных случаев XSS. Она возникает, когда уязвимый параметр к Cross-Site Scripting встречается в параметре тега:

<img… src=$XSS ….>

<font… size=$XSS ….>

<a… href=$XSS ….>

и т.п.

Тестирование показало, что фильтр Internet Explorer прекрасно справляется с данным видом атак.

17.2.2.3.4. Внедрение кода в html

Классическая ситуация, в которой внедрение происходит непосредственно в HTML, и для проведения атаки необходимо открыть тег. И в этом случае фильтр Internet Explorer показал себя с лучшей стороны, отфильтровав все опробованные комбинации и кодировки.

17.2.2.3.5. Использование расщепления http-ответа

Для тех разработчиков Веб-приложений, которые захотят отключить фильтр XSS на своих сайтах, в Internet Explorer подобная возможность предусмотрена путем установки HTTP-заголовка "X-XSS-Protection: 0" в возвращаемом Веб-сервером ответе.

Однако это можно использовать для обхода фильтра XSS. Такая возможность возникает, когда приложение уязвимо для XSS и для уязвимости типа "Расщепление HTTP-ответа" (HTTP Response Splitting). Используя расщепление, злоумышленник может внедрить дополнительный HTTP-заголовок, который будет отключать фильтр XSS, и эксплуатировать уязвимость.

Не смотря на то, что подобная ситуация встречается не часто, ее тоже необходимо учитывать. По статистике Web Application Security Consortsium, ручной анализ позволяет идентифицировать HTTP Response Splitting в 7,75% всех приложений.