Ежегодно проводимая конференция 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. В целом, доклад, если не инновационный с точки зрения способов обхода, то уж точно приносящий много пищи для размышления, как разработчикам, так и взломщикам.
12 replies on “Презентация способов обхода XSS фильтров на BlackHat”
Спасибо, особенно интересно будет почитать про обход NoScript
Супер! Большое спасибо! Отправился качать материал =)
Спасибо, интересный доклад, жалко только, что в б-гмерзком ppt, у меня местами верстка “поплыла”.
Заинтересовался про NoScript, но не понял, почему в варианте со “сложным и длинным js будет убил только NoScript, разве при зависании на обработке javascript не весь браузер будет падать? Мне казалось, что разделение обработки js на несколько потоков еще только в планах…
жаль только что оргкомитет мало выкладывает материалов с конференции
я бы пересмотрел все видео докладов, если была бы возможность 🙂
пошел смотреть презентацию 🙂
http://www.facebook.com/video/?id=107691635153
маленький видео-отчет за 2009 год )
Объясните, вкратце, как такое работает:
($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!”
+$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_)
если не трудно, конечно
Нашел онлайн-демонстрацию этого вектора на сайте автора: http://utf-8.jp/public/jjencode.html
Также есть презентация на эту тему, но она, к сожалению, на японском: http://utf-8.jp/public/20090710/jjencode.pps
Я вот тут разобрал все вроде подробно. Только его online encoder не так делает, как пример из презентации написан, но похоже в принципе, вот, почитайте если интересно:
http://oxod.ru/2009/08/26/обход-xss-фильтров-по-средствам-особенос/
Презентация на японском, н ов целом всё понятно
вот ссылки на первоисточники:
http://www.namazu.org/~takesako/ppencode/LLDN2005-ppencode.ppt
http://d.hatena.ne.jp/reosablo/20090514/1242306038
P.S. Закшифрованный текст действительно получается большим. Хотя в криптографии есть методы решения проблемы
Есть вариатны и без кавычек:
(ß=[],[Ç=!!ß+ß,µ=!ß+{}][µ[ª=Ç[++ß]+Ç[+!ß],È=ß-~ß]+µ[È+È]+ª])()[µ[ß]+µ[ß+ß]+Ç[È]+ª](ß)
http://forum.antichat.ru/thread135845.html
Но публииковать способ создания никто нихочет)
[…] время очень популярной темой, о чем свидетельствуют последние исследования. Как всегда, под прицелом самый известный из файрволов […]
Вот спасибо! Кручу один сайт идеологически нехороший. Есть XSS, но раскрутить не могу. Попробовал ради эксперимента, маленько исправив – вывалилось “A Database Error Occurred” и интересная инфа о БД.