Большинство пользователей социальной сети «ВКонтакте» знакомы с принципом работы групп и публичных страниц. Имеется один создатель, модераторы и подписчики. В зависимости от настроек, некоторые из них имеют возможность размещать собственные публикации в ленте сообщества. Логично, что сервера будут хранить данные о каждом кто учавствовал при выкладывании сообщения. Самая длинная цепочка состоит из двух элементов: пользователь написавший сообщение в блок «предложить новость» и модератор, чьей рукой было поставленно подтверждение. Исходя из этого, можно предположить, что эти данные могут быть получены через api.
Обратившись к документации легко выяснить, что большинство методов связанных с общедоступными объектами (публикации на стене, фотографии, документы, ...) в ответе возвращают результат запроса и два дополнительных массива (если при запросе указать extend=true):
response: {
items: [],
profiles: [{
id: 1,
first_name: 'Pavel',
last_name: 'Durov',
sex: 2,
screen_name: 'durov',
photo_50: 'http://cs629231.v...543/FfB--bOEVOY.jpg',
photo_100: 'http://cs629231.v...542/fcMCbfjDsv0.jpg',
online: 0
}],
groups: []
}
По названиям массивов понятно, что они должны содержать и для чего нужны. При запросе какого-либо сообщения со стены сообщества, мы получим само сообщение, пользователя, который его написал (+ модератор), и объект самой группы. Всё предельно просто и прозрачно. Но во многих сообществах есть понятие анонимности. Например, группы в которых люди рассказывают о своих жизненных взгодах и невзгодах, через функционал «предложить новость» с пометкой «анонимно». Модератор, перед публикацией поста, снимет галочку с соответсвующего чекбокса и аккаунт истинного автора не отобразится нигде. Или же публицист, желающий оставаться в тени и не раскрывать личности, в настройках своей публичной страницы уберёт все ссылки и отметки о создателе.
В первый раз я столкнулся с тем, что тот самый простейший запрос wall.get возвращает в списке пользователей человека из первого примера. Об этом я писал(ссылка в шапке). И вот, по прошествии двух лет я в очередной раз просто обратился к документации из интереса. На этот раз я смотрел метод newsfeed.getComments без каких-либо злых намерений. Этот метод возвращает посты в которых текущий пользователь оставил комментарий или иным образом подписался на уведомления(раздел «Мои новости -> Комментарии»). Получив необходимые мне результаты я обратил внимание на то, что в ответе сервера в злополучном массиве profiles лежит 5 аккаунтов. Зачем они нужны и откуда они берутся следовало немедленно выяснить. Для тестов я брал анонимную группу своего города, оставлял комментарий под последним постом и смотрел на ответ сервера, по запросу к этому методу.
Оказалось, что каждый из этих пользователей имел непосредственное отношение к посту. Первым был тот, кто опубликовал новость, то есть человек с правами не ниже модератора, вторым был тот, кто «предложил новость», если он вообще был, и оставшиеся трое — последние прокомментировавшие запись. После проверки на тех группах, в которых все эти данные были «скрыты» настройками приватности, всё лишь подтвердилось. Всё именно так и было: всё, что скрывалось настройками приватности, было достпуно тремя кликами.
Первое, что я возжелал сделать — сообщить об этом недоразумении в баг-трекер ресурса. Где меня встретила лента обрабатываемых в данный момент ошибок связанных с мелкими недочетами a'la «у вас косяк с вёрсткой, два пикселя лишние». Спустя десять минут поиска я отчаялся самостоятельно найти кнопку «сообщить
Пока ждал от них ответа, исследовал все возможные вариации использования метода. Ограничения всё же имелись, это то, что узнать этих пользователей можно было только в том случае, если запись лежит на стене сообщества, в сообществе разрешены комментарии. Именно это ограничение и помешало мне доказать кому-то из vc, что я не просто выдумываю кто какую группу модерирует. Они попросили сказать, кто админ их группы, а у них комментарии отключены. Я просто стал заваливать их списком модераторов известных новостных сообществ: «Первый канал», «РБК», «Известия» и прочие. Попутно в свою группу без подписчиков скидывал те же ссылки, чтобы не утерять вместе с перепиской и похвастать всем своим двум друзьям. Не учел того факта, что ссылки в постах группы имеют свойство оповещать отмеченных в них людей. И мне написал один из упомянутых модераторов с просьбой рассказать как я этого добился. Я темнил до последнего, ожидая, что vc хоть как-то поможет с закрытием дыры. Через два часа из vc мне сказали, что они сообщили в вк, а сами ничего делать не будут.
Итог: мой аккаунт со всеми контактами, портфолио, коллекцией музыки, заметками и закладками канули в небытие с подписью «заблокирован навсегда». Мои группы удалили, записи потерли, дыру закрыли кардинально, в profiles теперь вообще ничего не выводится. Единственное, что у меня осталось от этого случая — нежелание сообщать о таком вообще кого-либо.
Комментарии (67)
Apatic
04.05.2016 11:33+58Итог: мой аккаунт со всеми контактами, портфолио, коллекцией музыки, заметками и закладками канули в небытие с подписью «заблокирован навсегда». Мои группы удалили, записи потерли, дыру закрыли кардинально, в profiles теперь вообще ничего не выводится. Единственное, что у меня осталось от этого случая — нежелание сообщать о таком вообще кого-либо.
Так как материться на Хабре нельзя, то без комментариев…catHD
04.05.2016 14:25+28Добро пожаловать к Mail Group
webbrother
06.05.2016 15:24Не понимаю почему люди работают там, почему эта контора не закроется от неквалифицированных кадров, ведь квалифицированные должны уважать себя и работать в другом месте.
SvyatoslavMC
04.05.2016 11:51+28У нас в городе прохожие засняли на камеру как неправильно паркуется оператор парковки и предъявили видео. В итоге прохожих оштрафовали за выход на проезжую часть, которые чуть вышли, чтобы сделать запись. Вот так вот.
koceg
04.05.2016 13:52+5Если оштрафовали и парковщика, то это нормально — так и должно быть в правовом государстве.
BaRoN
04.05.2016 14:05+8Есть отличный лайфхак, как избежать подобного штрафа, я всегда им пользуюсь: не надо выходить на проезжую часть, если там нет пешеходного перехода. Оштрафовать в подобной ситуации необходимо обоих: и горе-парковщика, и горе-оператора.
Milfgard
04.05.2016 16:06+16В некоторых маленьких городах вы умрёте от голода, гуляя только по своему кварталу.
BaRoN
04.05.2016 16:38+3Если память не врёт, то в случае, если пешеходных переходов поблизости нет, можно выходить на проезжую часть, посмотрев по сторонам и убедившись, что навстречу мне не несётся Кармагеддонщик, задача которого меня сбить. Но только в случае отсутствия пешеходных переходов.
ibKpoxa
04.05.2016 19:41+4Пешеходными переходами являются продолжения тротуаров на перекрестках, если нет явно отмеченных переходных переходов.
u007
05.05.2016 13:11Нет такого пункта в ПДД
ibKpoxa
05.05.2016 15:35ниже ссылка на пункт в пдд
u007
05.05.2016 17:38Продолжения тротуаров не являются пешеходными переходами, как бы то ни было)) Там почти в явном виде это пишут: «при их (переходов) отсутствии». Просто место, где можно переходить. И даже более того: «должны», т.е. в обязательном порядке, шаг влево, шаг вправо — штраф-с… И главное отличие от перехода — приоритет всё-таки у водителя, если он не заруливает с параллельной вам дороги — для них отдельный пункт, они проезжают последними.
ibKpoxa
05.05.2016 18:30-1>> при их отсутствии — на перекрестках по линии тротуаров или обочин
Вот это и есть продолжение тротуаров, что вы к словам придираетесь? Общий смысл ясен, точен, на академическую точность цитат я не претендую.Ayahuaska
05.05.2016 19:25Я так понял, что общий смысл нарушен в том месте, где говорится о приоритетах. На переходе он у пешехода, при пересечении дороги на перекрёстке при отсутствии перехода — у водителей.
Smittyperm
04.05.2016 17:18+3ПДД предусматривают переход проезжей части при отсутствии пешеходных переходов поблизости.
lolhunter
04.05.2016 21:00+2В ПДД есть такая штука, как п. 4.3
Вот он с комментариями ГИБДД.
http://www.gibdd.ru/docs/pdd/pdd-4/67921/
Пешеходы должны пересекать проезжую часть по пешеходным переходам, в том числе по подземным и надземным 1, а при их отсутствии — на перекрестках по линии тротуаров или обочин 2. При отсутствии в зоне видимости перехода или перекрестка разрешается переходить дорогу под прямым углом к краю проезжей части на участках без разделительной полосы и ограждений там, где она хорошо просматривается в обе стороны
То есть помимо разметки и знаков есть два варианта перейти дорогу
1) По линии тротуаров или обочин (фактически любой X обрыхный перекресток, где есть тротуары, или Т образный частично)
2) Перпендикулярно дороге если нет разделительной полосы или ограждения (МКАД например нельзя).
mtp
06.05.2016 02:46ПДД, пункт 4.3:
"… При отсутствии в зоне видимости перехода или перекрестка разрешается переходить дорогу под прямым углом к краю проезжей части на участках без разделительной полосы и ограждений там, где она хорошо просматривается в обе стороны. ..."
https://www.consultant.ru/document/cons_doc_LAW_2709/1736bcf22f8e05f9d3db535f6d084651bad887a4/
(не обновил комментарии в висевшей вкладке, уже упомянули этот пункт)
Kress
04.05.2016 12:07Этот метод возвращает посты в которых текущий пользователь оставил комментарий или иным образом подписался на уведомления
Не совсем понятно, как этот метод срабатывал для постов, в которых отключены комментарии? Или подписаться на уведомления можно, нажав «Мне нравится»?Whiteha
04.05.2016 12:23+1Ограничения всё же имелись, это то, что узнать этих пользователей можно было только в том случае, если запись лежит на стене сообщества, в сообществе разрешены комментарии.
По моему трактуется это однозначно — дыра была доступна только при этих, не самых редких условиях.
FeNUMe
04.05.2016 12:26+4Очень глупо было «ломать» со своего основного аккаунта. Ну и вообще заниматься пентестом сайтов с российскими владельцами занятие весьма рискованное, вполне реально нарваться на неадекватов которые вместо спасибо или награды за баг, сообщат о вас в органы и подадут иск за взлом.
krimtsev
04.05.2016 19:46+1на неадекватов которые вместо спасибо или награды за баг, сообщат о вас в органы и подадут иск за взлом
— Вы обвиняетесь в намеренном взломе системы безопасности и вмешательстве в частную жизнь по средству созданию сайта Facemash. Прежде чем начать слушание Вы можете сделать заявление.
— Я… На мой взгляд я заслуживаю поощрения, ведь выявил слабые места в системе безопасности.
© Фильм «Социальная сеть»
AVX
05.05.2016 13:59+2Это ещё что — я как-то заметил, что сайт одной из местных газет не работает. Оказалось — забыли (забили?) продлить. Думал, к концу срока всё-таки заплатят за продление домена — но нет, домен удалили после окончания регистрации. Я его выкупил, поставил маленькую страничку-загрушку, и написал им письмо, что, мол, если нет возможности содержать сайт, то я за вас это сделаю, и предоставлю полный доступ к хостингу. Знаете что ответили? — Оказывается, я негодяй, и незаконно использовал их логотип в своих целях, и даже привели статью, по которой якобы меня привлекут. Однако я не ИП и никаких денег не заработал на этом сайте, и даже если бы как-то заработал, то не в той же области деятельности (я и не собирался самостоятельно размещать их статьи из газеты, только если они сами бы стали это делать) — так что ничего не вышло бы у них.
Правильно говорят — от добра добра не ищут.
P.S. и что теперь с этим доменом делать?
aalebedev
04.05.2016 12:54+16https://hackerone.com/vkcom
http://vk.com/support?act=new
Почему нельзя было выбрать ничего из этого?
Кстати, скорость ответа очень зависит от типа вопроса. На некоторые вопросы я получаю ответ в течение часа, на другие несколько дней.
А vc.ru имеет отношение к ВК из-за бывших учредителей и сотрудников.
Впрочем, как Selectel, но это не мешало отменить субсидию на разработчиков.Ayahuaska
05.05.2016 10:52>http://vk.com/support?act=new
Где можно найти эту ссылку? Вот только что вот прямо пытался сообщить о мелком косяке. Единственное что нашёл — багтрекер, где можно всё имеющееся посмотреть, но не добавить.
Ayahuaska
05.05.2016 11:02Стоп, это ж не ссылка на создание бага в трекере. это ж просто вопрос саппорту.
cheapnd
04.05.2016 14:25-3Не нужно вообще что либо сообщать, последствия всегда бывают, и не зависит, сделал ты хорошо или плохо
всех багоюзеров, когда либо зарегестрированных в вк удаляли
куча страниц с безымянками, на всей странице и пр были удалены
Если только анонимно об этом сообщать
Награды не получишь, всю славу заберут сотрудники вк.
PekaFat
04.05.2016 14:26+6Репортил похожую уязвимость на hackerone, ответа ждал полгода, но в итоге её пофиксили, а мне выплатили вознаграждение, поэтому виноват здесь исключительно автор поста.
Hakhagmon
04.05.2016 14:26+2«заблокирован навсегда»
Не ты первый, не ты последний бан всегда дают «за эксплуатирование уязвимости».MasMaX
05.05.2016 11:32+1А как можно найти дырку не эксплуатируя её?
astraleuro
04.05.2016 14:27+4Ну вот как всегда, человек старался, искал разные способы рассказать администрации ресурса о проблеме, не раскрывал суть бага до его закрытие, а что в награду? «мой аккаунт со всеми контактами, портфолио, коллекцией музыки, заметками и закладками канули в небытие с подписью «заблокирован навсегда»». Обидно!
Как то пытались получить объяснения от ТП о причине блокировки страницы?
CodeKeeper
04.05.2016 14:27+3Итог: мой аккаунт со всеми контактами, портфолио, коллекцией музыки, заметками и закладками канули в небытие с подписью «заблокирован навсегда». Мои группы удалили, записи потерли, дыру закрыли кардинально, в profiles теперь вообще ничего не выводится. Единственное, что у меня осталось от этого случая — нежелание сообщать о таком вообще кого-либо.
Сами себе могилу роют.
gospodinmir
04.05.2016 14:28+9Почему не воспользовались баг-баунти программой? (тыц).
Ваше поведение совсем не похоже на «этичный хакинг».
Эксплуатация уязвимости в отношении третьих лиц:Я просто стал заваливать их списком модераторов известных новостных сообществ: «Первый канал», «РБК», «Известия» и прочие.
Разглашение сведений о выявленной уязвимости:
Поэтому я решил написать тому, кому, как я думал, это будет интересно, тем самым привлечь внимание на ошибку.
Меры, принятые по отношению к вам, адекватны на все 100%.
ZloDeeV
04.05.2016 15:05+10Свой косяк о том, что не сообщил на hackerOne я признаю. Меня закидают тухлыми помидорами за минимальное знание английского языка, я честно пытался описать эту ошибку туда, но в первом же блоке не смог выбрать подходящий тип.
Меры пресечения были использованы верно, тоже не спорю. Но заблокировали меня не за распространение «закрытой» информации, а за то, что пользователи увидели отметку у себя в «Мои ответы» и нажимали кнопочку «спам».
Ещё момент, на моей заблокированной странице высветилось сообщение о том, что если я желаю оспорить поведение модераторов, то пишите в тех. поддержку с этой страницы, а там меня встретило оповещение, что я исчерпал лимит обращений в поддержку, когда отправлял сообщение о баге в вёрстке.ertaquo
04.05.2016 16:26+2То есть вас заблокировали даже не за эксплуатацию бага и раскрытие его третьему лицу вместо официальной техподдержки, а из-за сообщений о спаме? К чему вы вообще городите все это? Пытаетесь показать, что ВК такой плохой?
EviGL
04.05.2016 17:19+5Откуда информация, что именно за это заблокировали? Мне кажется, посты с глупостью и негативом получают сотню-другую нажатий кнопки «спам», не думаю, что кто-то от этого в бан улетает, это всё в итоге модерируется.
Всё же ваше поведение при обнаружении бага было крайне неверным. Публикация анонимной информации в нарушение условий пользования сервисом. Меня даже поражает количество комментариев, где считают, что администрация vk не права. Найденная уязвимость эксплуатировалась самым злостным образом (пусть и без злого умысла). Это как переводить деньги в банке на случайные счета со случайных счетов, найдя уязвимость.ZloDeeV
04.05.2016 17:26-1Были раньше проблемы с этим, когда узнал, что публикации в группах позволяют отметить любого человека, а ссылку скрыть символом пробела нулевой длины. Если отметить в одном посте 5-6 человек и 2-3 человека нажмут на «спам», то прилетит бан. Отсюда и информация,
Уязвимость напрямую я не эксплуатировал. Найденную информацию знал только я, один человек из vc.ru, которому я показывал суть проблемы и два человека из моего пустого паблика. Единственный человек, кого я реально «разоблачил» — на своей стене написал «Привет модератору MDK», там какой-то фейковый аккаунт был.mihver1
04.05.2016 17:35+4К сожалению, вы тут лукавите, когда говорите, что только одного человека «разоблачили». Я насчитал 18 человек.
EviGL
04.05.2016 17:46+5Ну всё же разместить на публичной странице (как и на своём сайте, например) есть опубликовать. И то что «зуб даю, никто не заходил туда» и «только эти два человека которые никому не расскажут» не является оправданием этому нарушению.
В общем, удачи вам с техподдержкой, может и правда было ложное срабатывание. Но если не выгорит, их действия вполне закономерны, увы.
Правильным решением было бы создать (попросить друга) тестовую группу со скрытым админом, показать краткую выжимку из логов запроса/ответа API, раскрывающего личности админа и предложившего новость (тоже друга), демонстрировать всё именно на этом примере. Если вы не хотели раскрывать подробности уязвимости заранее (почему, кстати?), попросить собеседника создать группу с неизвестного вам аккаунта. А ваши маленькие шалости про то, что вы знаете кто админ МДК, оставить глубоко при себе. Тот же FB тоже покарал бы за эксплуатацию уязвимости на реальных аккаунтах, а тем более за публикацию результатов.
j-ker
05.05.2016 17:13VK уже давно тот, что раньше… Например, если раньше нарушение пп. 6.3-6.4 (не помню какие там подпункты) пользовательского соглашения (фейковые имя и фамилия) привдили к однозначной блокировке аккаунта, то сейчас на сообщение администраторам о спаммере под именем Rus -fuckyourass- Gay, например, приводит к встречному вопросу — «ой, а что он такого сделал-то? ну Рус, ну гей, ну фак май эсс и что?»
Itachi261092
10.05.2016 11:21это говно меня вообще бесит. сижу вк под именем demon 666 (зарегался лет в 14). Хотел сменить на какое нибудь другое подобное говно — админы не разрешают. там если я пишу не типичное фио по шаблону, то процедура автоматически отправляется на рассмотрение модераторами и они там уже требуют фотку с паспортом чтоб совпадало имя. но если вводить просто Вася Пупкин — без проблем всё поменяется. если регать новый акк — тоже любое говно написать можно.
Itachi261092
10.05.2016 11:14То есть автор сам выставил себя идиотом а тут в завуалированной форме пожаловался? Скажите спасибо, что вк не стал привлекать к уголовщине а всего лишь заблокировал аккаунт с группами. То что они долго реагируют на сообщения о багах это отдельная тема. если Вам это не нравится — тоже отдельная. а то, что Вы воспользовались дырой для разоблачения админов и модераторов, и публиковали эти данные в открытом доступе, и тем более обсуждали с третьими лицами, это уже конкретный взлом, и за это полагаются ответные действия. На мой взгляд всё ещё как то мягко разрешилось.
reactors08
10.05.2016 12:17+1Сообщать третей стороне об уязвимости не этично и блокировка вполне оправдана. Согласен у VK есть проблемы с быстрым реагированием на подобные проблемы, даже на hackerone (что уже говорить про «баг-трекер ресурса»). Но тем не менее, ребята молодцы, почти все отправленные мной баги они пофиксили и из них около пяти касались приватности закрытых сообществ.
kreon
Для сообщения о багах есть ресурсы типа hackerone.
Jabher
Более того, VK представлен на hackerone
SamVimes
Я им туда как-то написал, что можно участвовать в опросах закрытых групп, если зайти через приложение (веб-интерфейс говорит access denied, т.е. закрыто на уровне интерфейса, а не на уровне API). Они ответили, что так и задумано (три ха-ха).
Labunsky
Вам они хоть ответили, у некоторых и вот так бывает (теги не работают, прошу прощения за ссылки):
habrastorage.org/files/a1a/b7d/655/a1ab7d655d59484fbb77bf1cb59c7d7c.png
habrastorage.org/files/db4/c27/fc4/db4c27fc456849e68484483ccb8b67be.jpg
farcaller
Labunsky
Спасибо
Jabher
Ну как бы там ни было — если есть точка входа для bug bounty, корректно пользоваться ей. Иначе можно дойти логикой и до ситуации «я багрепорт написал на пакете, навалил в него кучу, принес к дому Зингера и поджег — пусть знают, как не реагировать на hackerone».
chupasaurus
Их кампания на Hackerone — «для технических уязвимостей». Только суппорт, ситуация с которым в статье упоминается.