Как войти в MAX без пароля, СМС и QR. Две команды, и ты внутри

от автора

Почувствуй себя хакером: пара команд в консоли браузера — и ты в аккаунте.

ДИСКЛЕЙМЕР

Всё, что ниже, опубликовано только в познавательных целях. Никакого взлома и никаких эксплойтов тут нет, и автор ничего не изобретал. Команды, которые вы увидите, — штатные операторы самого MAX, спокойно живущие в продакшене. Зачем их там оставили — вопрос отдельный. Если у вас есть версия, напишите в комментариях, интересно собрать гипотезы. Делайте это только со своим аккаунтом. За то, что вы творите со своими же ключами, отвечаете вы, а не я.


СМС не приходит, пароль вы не помните, наводить камеру на QR лень. В веб-версию MAX можно зайти вообще без всего этого — тем, что браузер хранит у себя сам. Показываю по шагам, чтобы повторила даже бабушка.

Сначала по-простому, что происходит. Когда вы один раз вошли в web.max.ru, браузер сохраняет токен — длинную строку-пропуск, по которой MAX вас узнаёт. Этот токен можно скопировать и подсунуть в другой браузер. Он войдёт. Без пароля, без СМС, без QR. Всё.

Часть 1. Браузер, где вы уже вошли: берём токен

Нужен только токен — одна длинная строка. Больше ничего копировать не надо.

  1. Откройте web.max.ru, где видны ваши чаты.

  2. Нажмите Ctrl + Shift + J. Откроется чёрное окно консоли.

  3. Первый раз в этом браузере консоль не даст вставить команду — наберите руками allow pasting и Enter (один раз на браузер, потом не нужно). Без этого будет ошибка.

  4. Вставьте строчку и нажмите Enter — она копирует только токен в буфер:

copy(JSON.parse(localStorage.__oneme_auth).token)
  1. Внизу появится undefined — это нормально. Токен уже в буфере обмена, на экран он не выводится.

Если хотите увидеть токен своими глазами и скопировать руками — выполните вместо этого:

console.log(JSON.parse(localStorage.__oneme_auth).token)

В консоли появится просто длинная строка без кавычек — это и есть токен целиком, его и копируйте.

Если же вы открыли всё хранилище (console.log(localStorage.__oneme_auth)), то увидите такую строку (пример выдуманный):

{"token":"AbCd3Fg...очень длинная строка...Xy9Z","viewerId":123456789}

Отсюда копируйте только токен — то, что стоит в кавычках сразу после "token":. То есть от первого символа после "token":" и до кавычки перед ","viewerId". В примере это AbCd3Fg...очень длинная строка...Xy9Z. Фигурные скобки, слово token, viewerId и число — НЕ копируйте.

Консоль открыта; в строке ввода команда копирования токена. Вставляем её сюда.

После Enter внизу появляется undefined — токен уже в буфере.

Часть 2. Браузер, куда хотим войти: вставляем токен

Главное правило: сначала команда и Enter, и только потом — токен в появившееся окошко. В саму команду токен не вставляем.

  1. Откройте web.max.ru. Будет экран с QR. Так и нужно: значит, вы не залогинены.

  2. Нажмите Ctrl + Shift + J.

  3. Если в этом браузере ещё не разрешали вставку — allow pasting и Enter (как в Части 1).

  4. Вставьте команду и нажмите Enter (токен пока не трогайте):

m=prompt('Вставьте токен');if(m){localStorage.setItem('__oneme_auth',JSON.stringify({token:m.trim()}));location.reload()}
  1. Выскочит окошко. В него вставьте токен из Части 1 и нажмите OK.

  2. Страница перезагрузится и войдёт.

Экран с QR; в консоли команда вставки токена. Вставляем и жмём Enter.

Всплывающее окошко — сюда вставляем токен и жмём OK.

Готово: вошли без пароля, чаты загрузились.

Что важно понимать про сессию

Вход по токену с другого компьютера или браузера — для сервера это, по сути, тот же самый вход, что и по QR. Не новый, а тот же: оба браузера сидят на одном токене. Отсюда два следствия:

  • пока никто не нажимает «Выйти», сессия живёт и работает сразу везде, где вставлен токен;

  • как только кто-то один выйдет из аккаунта (или завершит сессию в настройках устройств) — токен становится недействительным сразу для всех браузеров, а не только у того, кто вышел.

Поэтому просто закрыть вкладку — безопасно, токен живёт дальше. А «Выйти из аккаунта» рвёт вход всем, кто сидит на этом токене.


Никакого волшебства. Это то, что MAX держит у себя сам, и любой DevTools показывает за десять секунд. Что делать с этим знанием — решайте сами.

ссылка на оригинал статьи https://habr.com/ru/articles/1045678/