Сделав свои дела на сайте mts, по привычке решил проверить строку поиска на XSS. На удивление быстро нашел, зарепортил, mts пофиксили. Детали под катом.
Поиск на сайте spb.mts.ru и вообще mts.ru был уязвим к XSS.
Место внедрения XSS:
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$('#LinksHeader').hide();
if (window.exportCap) {
exportCap({ path: "/live/shopSearchHelper.aspx", querystring: "</script><script>alert(document.cookie);</script>", regionid: 1801, allResuls: "http://spb.shop.mts.ru/?q=" });
}
if ("False" == "True")
$('#LinksHeader').show();
});
</script>
Вводимая в поиск строка попадала в параметр querystring, где на html-сущности заменялись почему-то только кавычки и апостроф. Причем в других местах страницы все экранировалось правильно.
После отправки следующей строки в поиск в последних на тот момент версиях браузеров Firefox, Opera был получен алерт с cookie
</script><script>alert(document.cookie);</script>
В Chrome alert не было, IE не проверял.
Сообщение об уязвимости было отправлено 17 июня, сегодня исправили.
Мне показалось интересным, что браузеры по-разному отреагировали на отправленную строку, потому решил написать пост.
Автор: shr