Уязвимость «ВКонтакте» позволяла получить прямые ссылки на приватные фотографии / Хабрахабрtl; dr. Была обнаружена уязвимость в закладках ВК, которая позволяла получать прямые ссылки на приватные фотографии из личных сообщений, альбомов любого пользователя/группы. Был написан скрипт, который перебирал фотографии пользователя за определенный период и затем, через эту уязвимость получал прямые ссылки на изображения. Если коротко, то: можно было за 1 минуту получить все ваши вчерашние фотографии, за 7 минут — все фото, загруженные на прошлой неделе, за 2. Уязвимость на данный момент исправлена.
Администрация ВКонтакте выплатила вознаграждение в 1. Обычно, если вещь важная, я её загружаю в облако, но в моём случае в этом не было необходимости, и я решил воспользоваться функцией закладок «Вконтакте». Коротко про эту функциональность: в закладки добавляются все вещи, которые юзер лайкнул; также есть функция ручного добавления ссылки на пользователя и внутренней ссылки «ВКонтакте». Последний пункт мне показался очень интересным, так как после добавления ссылки на фото я увидел его превьюшку и текст с типом добавленной сущности: При добавлении ссылки сервер парсит её, пытается выяснить, на какую сущность она ссылается и достает информацию об этом объекте из базы. Как правило, при написании такого рода функций с множеством условий вероятность того, что разработчик что- то забудет, очень высока. Поэтому я не смог себе позволить пройти мимо и решил потратить несколько минут, чтобы немного поэкспериментировать.
В результате мне удалось кое- что найти. При добавлении ссылки на фотографию, заметку или видео, к которым нет доступа, можно было получить немного приватной информации об объекте.
У нас есть возможность собирать частные фотографии пользователей ВКонтакте, которые не доступны для просмотра 'Простым смертным'. Просмотр закрытых фото вконтакте. Скопируйте ссылку на профиль пользователя. Ну вот, вы теперь знаете, как смотреть закрытые страницы в контакте. Скотобаза – Поиск частной информации ВКонтакте (45 306 000 фотографий). Лично я нашел большую колекцию фото своих знакомых и подруг Хорошего поиска и Вам. Найденные фото они связали с аккаунтами реальных людей во «ВКонтакте» и позволили любому желающему найти в базе своих друзей.
Роскомнадзор пригрозил блокировкой сайту с частными фото из «ВКонтакте» по закону о персональных данных. Роскомнадзор через . Скотобаза – это сервис, которой содержит большую базу фотографий ВКонтакте, недоступных большинству пользователей. Если вы не нашли фото того пользователя, которого искали, то.
В случае с фото и видео — это маленькая (1. Через метод API fave. Links можно было получить ссылки на изображение, но опять же слишком маленького размера (7. Так что, по сути, ничего серьезного. Я решил зайти на мобильную версию сайта, чтобы проверить, отображается ли там всё так же, как и в обычной версии.
Заглянув в код странички, я увидел это: Да! В значении атрибута data- src. Это могло быть изображение из личных сообщений или же фотография из приватных альбомов любого пользователя/группы. Казалось бы, на этом можно было остановиться и написать разработчикам, но мне стало интересно, возможно ли, эксплуатируя эту уязвимость, получить доступ ко всем (ну или загруженным в определенный период времени) фотографиям юзера. Основной проблемой тут, как вы понимаете, являлось то, что не всегда известна ссылка на приватную фотографию вида photo. XXXXXX. В голову пришла мысль о переборе id фотки, но я её почему- то тут же отверг как сумасшедшую.
Я проверил связанные с фотографиями методы в API, посмотрел, как приложение работает с альбомами, но никаких утечек, которые могли бы мне помочь получить список с айдишками всех закрытых фоток юзера, найти не удалось. Я уже хотел было бросить эту затею, но взглянув еще раз на ссылку с фотографией, вдруг понял, что перебор таки был хорошей идеей. Как работают фотографии в ВК. Как вы могли заменить, ссылка на фотографию photo. Как же формируется вторая часть? Увы, но, потратив два часа на эксперименты, я так этого и не понял. В 2. 01. 2 году на High.
Load++ Олег Илларионов сказал несколько слов про то, как они хранят фотографии, про горизонтальный шардинг и случайный выбор сервера для загрузки, но эта информация мне ничего не дала, так как между id сервера и id фотки никакой связи не видно. Понятно, что есть некий глобальный счетчик, но там есть ещё какая- то логика. Я написал скриптик, который прошелся по фотографиям «старых» пользователей и по полученным данным составил график того, на сколько менялась эта цифра с каждым годом: Видно, что значения скачут в зависимости от каких- то факторов (количества серверов или новой логики?). Но суть в том, что они достаточно малы (особенно за последние 2- 3 года) и очень легко вычислить диапазон id для желаемого периода времени. То есть чтобы узнать прямые ссылки на фотки юзера, допустим, за прошлый год, нужно попробовать добавить в закладки всего лишь 3. Ниже я описал технику перебора, которая позволила мне проделать это за считанные минуты. Перебираем фотографии.
Можно было всё это добавлять руками через интерфейс или же написать скрипт, который добавляет по одной ссылке в закладки, но это было бы скучно и долго. Скорость перебора в таком случае составила бы 3 закладки в секунду, т. В одном вызове этого метода возможно 2. API. var start = parse. Int(Args. start). Int(Args. end). var victim. Id = Args. id. var link = .
За прошлый год фотографии перебирались бы долго, но вот для коротких промежутков этот метод перебора уже был довольно- таки неплох. Ускоряем перебор x. Ограничение на количество запросов/сек действует на каждое приложение отдельно, а не на пользователя целиком. Так что ничего не мешает отправлять параллельно много запросов, но при этом используя в них токены от разных приложений. Для начала нужно было найти (или создать) нужное количество приложений.
Был написан скрипт, который ищет standalone приложения в заданном интервале идентификаторов приложений: class Standalone. Apps. Finder. attr.
Для авторизации пришлось использовать механизм Implicit Flow. Пришлось парсить урл авторизации из диалога OAuth и после редиректа вытаскивать токен. Для работы данного класса нужны куки p,l (login. Authenticator. attr. Для распараллеливания всего этого дела было решено использовать гем Typhoeus, который отлично зарекомендовал себя в других задачах. Получился такой вот небольшой брутфорсер: class Photos. Bruteforcer. PHOTOS?
Оставалось только зайти в мобильную версию «Вконтакте», открыть консоль браузера, вытащить прямые ссылки и наслаждаться фотографиями в их оригинальном размере. Итоги. В целом, всё зависит от вашего интернет соединения и скорости прокси серверов, латенси серверов «Вконтакте», мощности процессора и множества других факторов. Опробовав скрипт выше на своем аккаунте, получил такие вот цифры (без учета времени, потраченного на получение токенов): Период. Время (минуты)Вчера. Прошлая неделя. 6.
Прошлый месяц. 18. Прошлый год. 12. 1. В таблице показано среднее время, необходимое для того, чтобы перепробовать id фотографий за определенный период.
Я уверен, всё это можно было ускорить раз так в 1. Например, в скрипте брутфорса сделать одну большую очередь из всех запросов и нормальную синхронизацию между ними, т. Да и вообще, можно было просто купить парочку инстансов на EC2, и за часик получить все фотографии какого угодно пользователя. Но я уже хотел спать.
Да и вообще, не важно, сколько времени злоумышленник на это потратит, 5 часов или же целый день, ведь так или иначе ссылки на приватные изображения он добудет. Возможность железно получить доступ к приватной информации за конечное время – и есть главная угроза, которую несёт данная уязвимость. Сообщаем об уязвимости. Сначала репорт был отправлен службе поддержки, но после ответа вида «спасибо, как- нибудь пофиксим наверное. Большое спасибо Bo.
M, который помог связаться с разработчиками напрямую. После этого баги закрыли в течение нескольких часов, а через несколько дней на мой счёт администрация перевела вознаграждение в размере 1. Целенаправленно исследованием ВК я никогда не занимался, но после такого, почти случайного обнаружения этой уязвимости серьезно начал задумываться о том, чтобы потратить несколько часиков на полноценный аудит этой социальной сети.
У «ВКонтакте» нет официальной баг баунти программы, поэтому whitehat ресерчеры обходят этот сайт стороной, а другие, менее «белые» хакеры, просто тихо пользуются ошибками в своих целях, либо продают их. Так что, думаю, ещё парочку подобных уязвимостей в ВК можно найти.