Headline
CVE-2009-3010: Cross-Site Scripting уразливості в Mozilla, Firefox та Chrome - Websecurity
Mozilla Firefox 3.0.13 and earlier, 3.5, 3.6 a1 pre, and 3.7 a1 pre; SeaMonkey 1.1.17; and Mozilla 1.7.x and earlier do not properly block data: URIs in Refresh headers in HTTP responses, which allows remote attackers to conduct cross-site scripting (XSS) attacks via vectors related to (1) injecting a Refresh header that contains JavaScript sequences in a data:text/html URI or (2) entering a data:text/html URI with JavaScript sequences when specifying the content of a Refresh header. NOTE: in some product versions, the JavaScript executes outside of the context of the HTTP site.
23:55 11.07.2009
В минулому місяці я писав про Cross-Site Scripting уразливості в Mozilla, Internet Explorer, Opera та Chrome. Яка дозволяє виконання JavaScript коду через заголовок refresh (зазначу, що подібну атаку також можна реалізувати через інший вектор - через meta-refresh тег). Дана уразливість була виправлена Мозілою в Firefox 3.0.9.
Так от нещодавно, 06.07.2009, я знайшов можливість обходу даного захисту в Firefox. Також даний метод XSS атак працює в Mozilla та Chrome.
Для обходу захисту від виконання JavaScript коду через заголовок refresh потрібно використати data: URI, в якому буде вже міститися необхідний JS код. Цей метод для проведення XSS атак через meta-refresh тег вже давно відомий - він був в XSS Cheat Sheet ще в 2006 році. І от його я використав для обходу захисту в Firefox та для проведення атак через refresh-header редиректори.
XSS:
Вектори атаки через meta-refresh тег та заголовок refresh:
<meta http-equiv="refresh" content="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ+">
При запиті до скрипта на сайті:
http://site/script.php?param=data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ%2b
Що поверне у відповіді заголовок refresh і код виконається у браузері:
refresh: 0; URL=data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ%2b
Через data: можна обійти в Firefox 3.0.9 і вище (тестував в 3.0.11) заборону на виконання JavaScript коду в заголовку refresh. Тільки в Firefox 3.0.11 і Google Chrome таким чином до кукісів не дістатися, зате це можна зробити в старій Mozilla.
Уразлива версія Mozilla 1.7.x та попередні версії.
Уразлива версія Mozilla Firefox 3.0.11 (і 3.5 також повинен бути уразливим) та попередні версії.
Уразлива версія Google Chrome 1.0.154.48 та попередні версії (і потенційно наступні версії).
This entry was posted on 23:55 11.07.2009 and is filed under Уразливості. You can follow any responses to this entry through the RSS 2.0 feed.