Доступ к приватному видео Вконтакте

Так вышло, что мне стало интересно узнать, насколько безопасно публиковать приватное видео на вконтакте.ру Оказалось, что сейчас уровень защиты слабый.

Немного копнуть


Перед тем как исследовать чужие файлы, стоит изучить систему поближе, поэтому я закачал видеоролик на вконтакте, сделал его публичным, а урл на видео скормил сервису videosaver.ru. Сервис хороший, потому как любезно предоставил мне прямую ссылку на мой файл.

Далее, свое публичное видео я сделал крайне приватным (только для себя), и попробовал снова скачать файл напрямую с завершенной сессией. Ага, качается. Это значит, что сервера на раздаче видео не производят проверки на приватность (и правильно делают, потому как это надо делать в другом месте).


Thumbnail это все


Ссылка на мой публичный, а ныне приватный ролик выглядит как:

551.gt3.vkadre.ru/assets/videos/08e8e26a100647241.vk.flv

в которой самая интересная часть — 08e8e26a100647241. Это явно хеш и вычислить его врядли получится, а значит необходимо найти этот хеш на сайте — в исходниках, в коментах, где угодно. Просмотр исходных кодов страниц со списком моего видео и при просмотре видео ничего не дало, но при этом видно, что thumbnail видеоролика генерируется скриптом:

vkadre.ru/get_thumbnail?vkid=100647241&vtag=08e8e26a&size=160

id ролика и прочее нас не интересует. Главное, что этот скрипт выдал нам прямой линк к картинке:

551.gt3.vkadre.ru/assets/thumbnails/08e8e26a100647241.160.vk.jpg

и да, вот он наш хеш (08e8e26a100647241), который мы наблюдали в ссылке на видео. Понятное дело, теперь можно связать любой thumbnail с частью полного пути к flv файлу.

Путь к файлу


Если название файла можно получить из названия картинки можно, то теперь необходимо достроить остальной путь — название сервера и субдиректории. Субдиректории все одинаковые и отличия в ссылках только в хостах. Вцелом, все ссылки на видео можно описать как

http://[0-9]+.gt(2|3).vkadre.ru/assets/videos/[0-9a-z]{,16}.vk.flv

Нас интересует часть до vkadre.ru, потому как с хешем все ясно. Предположив, что на выдаче видео 2000 серверов (с крутым запасом) сканируем все хосты xxx.gt2.vkadre.ru и xxx.gt3.vkadre.ru на предмет ip адреса, где xxx от 1 до 1000.

Оказалось, что у вконтакте около 250 серверов (уникальных ip) на выдачу видео (возможно также они хостят и аудио, не проверял). Имея эти 250 серверов делаем простой перебор на скачивания файла:

http://[айпиадрес из пула]/assets/videos/[хеш из картинки].vk.flv

Если файл физически не найден, сервер выдаст дефолтный flv ролик на 300 килобайт с какой-то стремной музыкой. То есть, любой файл отличный по размеру от дефолтного и есть искомый ролик, а файл находится не больше чем через ~250 запросов.

Как это исправить


сделать проверку на доступ в скрипте /get_thumbnail.php и если прав нет, то показывать дефолтную картинку, мол тут дела личные и нечего смотреть превью. В дополнение к этому не стоит вообще показывать видео в списках, если его невозможно посмотреть.

update
Спасибо kabachok
более простой способ получения хеша
/get_thumbnail?vkid=100647241&vtag=08e8e26a&size=160 = 08e8e26a 100647241
это значит, что хеш впринципе публиковать нельзя.
+87
4 мая 2009, 23:05
55
keatlon 11,8

комментарии (67)

+9
vitaly44 #
Обычно, приватные видео нигде не публикуют. На то они и приватные.
+10
habracut #
пишите название фильма [x]
+19
CelesteKing #
Хабр уже не торт.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
–7
DeNnEr #
Хотя CelesteKing всёже имел ввиду знаменитый мем о дваче.
НЛО прилетело и опубликовало эту надпись здесь
+1
Kuuuzya #
Не сходите с платформы и в конце исследования вы получите торт.
+2
hiro #
Тут нельзя употреблять это слово!
0
kamehb #
Не знаю, не знаю. У меня вообще сработала ассоциация с недавним постом ТогоКогоНельзяНазывать.
+1
kabachok #
Фу, какое некрасивое слово :D
+1
kamehb #
Что делать, традиция и фольклор берут свое. :)
+2
kolpeex #
Многие и так поняли, Капитан!
0
Liksys #
The cake was real!
НЛО прилетело и опубликовало эту надпись здесь
0
VampiRUS #
вот просто для скачивания, принцип действия такой же vampirus.ru/scripts/skript-dlya-skachivaniya-video-vkontakteru-iz-grupp/
0
o_O_Tync #
Многие системы из тех, что не хранят информацию повышенной важности — основываются на ряде допущений…
–21
ehvadimka #
Но на вконтакте может быть информация повышенной конфиденциальности
+30
borisko #
Какой нормальный человек выложит вконтакте информацию повышенной конфиденциальности? Какой нормальный человек вообще ее выложит в интернет на публичный ресурс?
+2
Angerslave #
К сожалению, нормальный выложит. А грамотный, коих намного меньше, нет.
+3
ustrel #
Действительно. Единственный способ защитится от утечки информации (на первый взгляд незначительной) это не заводить профили в социальных сетях.
+1
ustrel #
Иногда на первый взгляд незначительная информация может быть полезной для третьих лиц и быть использованной против Вас. Поэтому такой социальной уязвимости в той или иной степени подвержены мы все. Ущерб зависит от конкретной личности и интересов третьих лиц.
0
GHS #
Ну конфиденциальную нет, а вот информацию, содержащую персональные данные, которые они обязаны защищать… Кстати, контакт весьма жестко нарушает ФЗ «О Персональных Данных» =)
+8
o_O_Tync #
ФАйлы, появляющиеся там, крайне редко предназначаются одному человеку ;) скорее уж группе людей. Такое сложно назвать приватным, скорее — нежелательным к публикации :)
Кроме того, все пользователи IE соглашались с вопросом: «Сведения, переданные в интернет, могут быть доступны другим пользователям. Продолжить?» :))))))))
НЛО прилетело и опубликовало эту надпись здесь
+1
IGHOR #
Ага или плагин написаный на «Вконтакте АПИ»
+14
kabachok #
vkadre.ru/get_thumbnail?vkid=100647241&vtag=08e8e26a&size=160
vkid=100647241 + vtag=08e8e26a = 08e8e26a100647241
Будьте повнимательнее.
0
keatlon #
действительно, не заметил. В даном случае неизвестный хеш сводится к 08e8e26a
НЛО прилетело и опубликовало эту надпись здесь
+2
egorinsk #
Ха, повторение предыдущего бага, раньше у них в именах тамбнейла и картинки (в т.ч. приватной) были почти одинаковые аджреса, только буквой различались.
–12
scrat #
всем похуй [x]
+26
jucie #
Приватное видео — это частное порно? Если нет — то оно никому не нужно имхо
+5
dmomen #
Как говорится, у кого что болит — тому то и нужно…
+9
Mutyonok #
«The Internet is for porn» ©
+8
Mutyonok #
«The Internet is for porn» ©
+3
Dreammaker #
The Internet is for morn
The Internet is for pork
The Internet is for corn

Дальше фантазия устала :)
–4
True_Max #
«Internet is gay» © Anal Cunt .)
+3
p4s8x #
Контакт это Дуршлаг. К нам на конференцию приезжал вирусный аналитик из касперского… ктото там. Активно нам рассказал процесс приема к ним на работу, как они пробивают по контакту, ктото из зала сказал «а у меня там страничка закрыта от всех», на что товарищь ответил: «Но вы же не верите что это так?)».

Я вернувшись с конференции заинетрисовался вопросом этим… как я понял, баг был не вконтакте, а в дуров.ру… но вроде пофиксили(но кстати список друзей можно было всеравно увидеть, щас не знаю..)
Вообщем косяков море и чтото мне кажется что они какието все «специальные»…
0
ustrel #
Как все сложно. Столько телодвижений. Наверно очень ценное видео надо было посмотреть ) А в целом было интересно почитать.
+2
kamehb #
Дух исследований и жажда открытия тайны — главные двигатели эволюции.
–1
RollingStone #
Мне понравилось. Интересно. )
0
razr #
ну все наверняка знают про еще один баг, но всё ж может кому будет интересно: можно смотреть фото, на которых отмечен человек, даже если они в закрытых альбомах — для этого достаточно найти хоть одну открытую фотографию и включить ускоренный режим просмотра страниц.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
0
keatlon #
> Превью картинка и видео разве не на одном серваке хостятся?

нет, на разных
0
monitorius #
Для всех закрытых видео, на которых я тестил этот способ, превьюха и видео хранились на одном. Это конечно не доказывает, что оно всегда так, но… =)
0
rianon #
Контакт вообще дрявый =) меня один раз прям в приватный альбом закинуло, с удовольствием поглядел, сначала не понял, а потом смотрю, картинок таких в том альбоме где я на фото кликнул нет =)
0
ivint #
многим у существовании данной дырки известно уже больше года. я ей, собственно, также активно пользовался для «пробивки по контаку» неблагонадежных товарищей. теперь можно и народу рассказать :) спасибо :)
0
SquirrelEx #
Помоему приватную инфу надо хранить на домашнем компе и лучше на зашифрованом разделе. Достаточно глупо выкладывать свою инфу куда-либо. Абсолютно безопасных сервисов нет и не будет. Единственное что необходимо реально защищать в контакте так это приватные сообщения… У некоторых там серьезный компромат ;) И желающих посмотреть приватные сообщения друга/подруги мягко говоря не мало…
+1
SkazochNik #
Я бы не доверял даже шифрованным дискам с проксоренными поверхностями. В наше время даже в мозгу хранить приватную инфу вредно (вспомните про сыворотку правды, алкоголь и другие веселые вещества).

Лично я решаю задачу по сохранению приватной инфы проще — страдаю маразмом. Это дешевле, надежнее, да и сплю легче.
0
Chrome #
Как вариант можно использовать возможности серверов nginx или lighthttpd которые умеют перед отдачей спрашивать скрипт на предмет можно или нельзя. При этом по прямой ссылке видео доступно не будет. При таком раскладе можно публиковать не только хэш, а даже прямой урл. Кому нельзя, доступ не получат.
0
AlexSam #
спрашивать скрипт на предмет можно или нельзя не совсем разумно при каждом обращении к файлу. лучше генерить ссылку для сессии и в параметры передавать какой-то хеш, который будет сгенерирован на базе сессии+IP+юзер агента+… и т.д. а потом его на стороне nginx'a валидировать и отдавать контент. у кого нет сессии или параметры не совпадают — тот получает Access denied. Так намного быстрее, но возникает проблема при кешировании на клинте, хотя, если документ конфиденциальный — то из соображений безопасности кешировать его глупо. Короче, нужно подходить к каждому вопросу индивидуально. Думаю что ребята посчитали что будет достаточно и такой защиты.
0
Chrome #
Простите, а как вы ее валидировать будете на нгинксе? Что вы будете спрашивать при этом?
0
AlexSam #
Ну как вариант подсчитывать хеш через встроенный перл. Все же быстрее чем дергать fastCGI скрипт для подсчета к примеру только MD5
0
Chrome #
Уважаемый, вы же все равно дергаете скрипт… Как можно понять из поста выше, я писал что можно дергать скрипт, но не накладывал никаких ограничений на то какой, на каком языке и т.д. Перловый скрипт он тот же скрипт, так что помоему мы с вами говорим об одном и том же решении, только разными словами, поправьте меня, если я ошибаюсь.
0
AlexSam #
да, что-то я туго с утра после майских соображаю. сори :)
как-то сразу подумал про бекэнд
–1
Error_403_Forbidden #
А ты симпатичный
+5
Aidsoid #
Что люди только не понапишут за плюсик на хабре =)
0
Error_403_Forbidden #
Кто бы говорил :)
0
Error_403_Forbidden #
Кстати, а где ты у меня плюсик увидел?
+2
Nitrogen #
я на днях научился через mms.megafon.ru просматривать чужие mms
надо тоже статью на эту тему написать.
0
SkazochNik #
Побольше подробностей, насколько получится. Заранее спасибо.
0
mexoboy #
А сколько дыр в app Vkontakte для iphone. Там можно не только просматривать приватные фото но и например менять фото себе, когда вы находитесь в условно-забаненых. Но это не все плюхи =)
НЛО прилетело и опубликовало эту надпись здесь
0
sylvio #
толку-то, прямой ссылкой можно пользоваться только если вы знаете, что видео есть и видите его тамб, а если оно приватное и просто для вас не отображается?
0
Lux_In_Tenebris #
на ВКонтакте (ВКадре) ещё как ни странно дофига порно выкладывают, в т.ч. детского!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.