Презентация способов обхода XSS фильтров на BlackHat

BlackHatЕжегодно проводимая конференция BlackHat является одним из самых значимых событий в сфере информационной безопасности. В этом году эксперты из множества стран собрались в Лас Вегасе, чтобы показать и обсудить результаты своих исследований. Разумеется, не обошли стороной веб-безопасность – наиболее интересное выступление дали Эдуардо Вела (Eduardo Vela) и Дэвид Линдсэй (David Lindsay) на тему реализации XSS-атак в условиях WAF. Были затронуты практически все самые известные программные продукты, связанные с защитой от XSS как на стороне сервера, так и клиента: PHP-IDS, Mod_Security, XSSFilter в IE8, NoScript. Наиболее слабым оказался Mod_Security, поэтому авторы доклада рекомендуют использовать PHP-IDS вместо него. XSSFilter, изначально неспособный защитить от всех типов XSS (по словам разработчиков из MS в силу производительности браузера), также был повержен несколькими новыми XSS-векторами. На уровне клиента докладчики посоветовали использовать Firefox+NoScript, хотя и для последнего были найдены способы обхода. Ознакомиться с материалами выступления можно на сайте одного из авторов. Презентация получилась немалой – более 100 страниц. Много внимания уделено новым XSS-векторам, некоторые из которых просто поражают воображение. Только взгляните:

(É=[Å=[],µ=!Å+Å][µ[È=-~-~++Å]+({}+Å) [Ç=!!Å+µ,ª=Ç[Å]+Ç[+!Å],Å]+ª])() [µ[Å]+µ[Å+Å]+Ç[È]+ª](Å)

($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''
+$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_)

За этим, казалось бы, беспорядочным набором символов кроется всем известный javascript:alert(1);. Кроме того, показаны примеры XSS, которые могут возникнуть в будущем с внедрением HTML5, а также уязвимость в PHP-функции utf8_decode(), позволяющая эксплуатировать неправильную обработку UTF-8. В целом, доклад, если не инновационный с точки зрения способов обхода, то уж точно приносящий много пищи для размышления, как разработчикам, так и взломщикам.

Join the Conversation

12 Comments

  1. Спасибо, особенно интересно будет почитать про обход NoScript

  2. Спасибо, интересный доклад, жалко только, что в б-гмерзком ppt, у меня местами верстка “поплыла”.
    Заинтересовался про NoScript, но не понял, почему в варианте со “сложным и длинным js будет убил только NoScript, разве при зависании на обработке javascript не весь браузер будет падать? Мне казалось, что разделение обработки js на несколько потоков еще только в планах…

  3. жаль только что оргкомитет мало выкладывает материалов с конференции
    я бы пересмотрел все видео докладов, если была бы возможность 🙂

    пошел смотреть презентацию 🙂

  4. Объясните, вкратце, как такое работает:

    ($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!”
    +$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_)

    если не трудно, конечно

  5. Есть вариатны и без кавычек:
    (ß=[],[Ç=!!ß+ß,µ=!ß+{}][µ[ª=Ç[++ß]+Ç[+!ß],È=ß-~ß]+µ[È+È]+ª])()[µ[ß]+µ[ß+ß]+Ç[È]+ª](ß)

    http://forum.antichat.ru/thread135845.html
    Но публииковать способ создания никто нихочет)

  6. Вот спасибо! Кручу один сайт идеологически нехороший. Есть XSS, но раскрутить не могу. Попробовал ради эксперимента, маленько исправив – вывалилось “A Database Error Occurred” и интересная инфа о БД.

Leave a comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.