Cross-Site Scripting уразливість в Mozilla, Firefox та інших браузерах

23:53 04.08.2010

У листопаді, 30.11.2009, я виявив Cross-Site Scripting уразливість в Mozilla та Firefox.

Дана уразливість дозволяє обійти заборону на виконання JavaScript коду в location-header редиректорах (при редирекції на javascript: URI). Вона подібна до Cross-Site Scripting уразливості в Mozilla та Firefox (через редиректори з відповіддю “302 Object moved”).

В Mozilla та Firefox (на сайтах, що використовують в редиректорі відповідь “302 Found”) при запиті до location-header редиректора з вказанням JavaScript коду, браузер виводить сторінку “Found”, де в лінці “here” виводить даний код. При натисканні на яку код спрацює. Тобто це Strictly social XSS, а також це ще один приклад Local XSS.

XSS:

При запиті до скрипта на сайті:
http://site/script.php?param=javascript:alert(document.cookie)
Що поверне у відповіді заголовок Location:
HTTP/1.x 302 Found
Location: javascript:alert(document.cookie)

Браузер виводить сторінку “Found”. При кліку по лінці “here” код спрацює в контексті даного сайту.

Окрім javascript URI, також можна використати data URI для виконання JS-коду, якщо редиректор виводить в заголовку Location символи “;” і “,” у чистому (не в URL encoding) вигляді.

Також в усіх версіях Mozilla та Mozilla Firefox можна використати інший варіант Strictly social XSS - з використанням -moz-binding (для Firefox < 3.0 або для Firefox => 3.0 з xml-файлом на цьому самому сайті) чи з використанням onMouseOver:

http://site/script.php?param=a:%22%20onMouseOver=%22alert(document.cookie)

При наведенні курсору на лінку “here” код спрацює в контексті даного сайту.

І якщо використати мою техніку MouseOverJacking, тоді можна автоматизувати дану атаку у всіх версіях Mozilla та Mozilla Firefox (особливо коли використання -moz-binding неможливе):

http://site/script.php?param=a:%22%20style=%22width:100%25;height:100%25;display:block;position:absolute;top:0px;left:0px%22%20onMouseOver=%22alert(document.cookie)

Дана атака працює якщо редиректор (з відповіддю “302 Found” чи “302 Object moved”) виводить подвійні лапки в заголовку Location у чистому (не в URL encoding) вигляді.

Уразливі Mozilla 1.7.x та попередні версії.

Уразливі Mozilla Firefox 3.0.19, Firefox 3.5.11, Firefox 3.6.8, Firefox 4.0b2 та попередні версії.

Уразливі Opera 10.53 та попередні версії (при цьому версія Opera 9.52 невразлива). В Opera код виконається не в контексті даного сайту.

Як і у випадку XSS через редиректори з відповіддю “302 Object moved”, до цієї уразливості також повинні бути уразливими SeaMonkey 1.1.17, Firefox 3.7 a1 pre, Orca Browser 1.2 build 5 та Maxthon 3 Alpha (3.0.0.145) з Ultramode.

[Оновлення: 16.09.2012]

Як я виявив, у версіях Firefox 10.0.7 і Firefox 15.0.1 дана уразливість більше не працює - вона була приховано виправлена Mozilla в Firefox 9.0.


2 відповідей на “Cross-Site Scripting уразливість в Mozilla, Firefox та інших браузерах”

  1. MustLive каже:

    Як я виявив ще в жовтні, Opera виправила дану уразливість в своєму браузері - в версії Opera 10.63.

    Причому зробила це вона приховано: спочатку вони проігнорували моє повідомлення (на початку серпня), зовсім не відповівши на мого листа, а в середині жовтня виправили дану XSS в своєму браузері, при цьому офіційно заявивши, що це вони самі виявили дану уразливість. Подібна ламерська поведінка даної компанії виходить за будь-які межі та є дуже несерйозною.

  2. MustLive каже:

    Opera підтвердила, що вони отримали мого листа, не проігнорували його і все ж таки виправили цю дірку (в жовтні). Тобто підтердила мою заяву про те, що в офіційних повідомленнях компанії (changelog та kb) йдеться при виправлення саме тієї дірки, про яку я їм повідомив - про XSS на сторінці браузера про помилку.

    Вони лише забули мені відповісти, забули подякувати і не вказали мене в себе на сайті (що з однієї сторони робить вигляд неначе це вони самі її знайшли, а з іншої сторони - інші компанії, зокрема Secunia, пишуть відповідним чином в себе на сайті). І Opera вибачилася переді мною за цей випадок і висловила подяку за повідомленя. Але посилання на мене вони досі не зробили (в changelog та kb), тому їм є ще куди виправлятися.

Leave a Reply

You must be logged in to post a comment.