Уязвимость позволяет производить некоторые действия вконтакте от чужого имени. В дальнейшем человека, от лица какого мы будем совершать эти действия, буду называть "жертва”.
Теория
Суть уязвимости:
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. Пишем там любую чушь, первое, чтоб не затребовать подозрения у жертвы, что тут что-то неладное. Что написать на странице - дело ваше. После этого вставляем куда-нибудь в тело странички скрытый .
(На
этом вехе может возникнуть дилемма, почему не совершить свободно
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 страничку, там , ссылающийся на нашу флэшку. Ныне кидаем ссылку на нашу страничку дружище, и, если дружище нажмет на ссылку, то фока у него должна исчезнуть.
Думаю, принцип вы поняли. Ныне приведу ведомость возможных действий, и требующийся для них 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=ИД_Сообщения
Удалить сообщение http://vkontakte.ru/notes.php?act=update&nid=ИД_Сообщения&title=НОВЫЙ_ЗАГОЛОВОК&Post=Надпись_Сообщения&visible=0&commentable=0
Редактировать сообщение ИД сообщения впору узнать из 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
Отправить на почту жертвы письмо с её паролем
|