Почувствуй себя хакером: пара команд в консоли браузера — и ты в аккаунте.
ДИСКЛЕЙМЕР
Всё, что ниже, опубликовано только в познавательных целях. Никакого взлома и никаких эксплойтов тут нет, и автор ничего не изобретал. Команды, которые вы увидите, — штатные операторы самого MAX, спокойно живущие в продакшене. Зачем их там оставили — вопрос отдельный. Если у вас есть версия, напишите в комментариях, интересно собрать гипотезы. Делайте это только со своим аккаунтом. За то, что вы творите со своими же ключами, отвечаете вы, а не я.
СМС не приходит, пароль вы не помните, наводить камеру на QR лень. В веб-версию MAX можно зайти вообще без всего этого — тем, что браузер хранит у себя сам. Показываю по шагам, чтобы повторила даже бабушка.
Сначала по-простому, что происходит. Когда вы один раз вошли в web.max.ru, браузер сохраняет токен — длинную строку-пропуск, по которой MAX вас узнаёт. Этот токен можно скопировать и подсунуть в другой браузер. Он войдёт. Без пароля, без СМС, без QR. Всё.
Часть 1. Браузер, где вы уже вошли: берём токен
Нужен только токен — одна длинная строка. Больше ничего копировать не надо.
-
Откройте
web.max.ru, где видны ваши чаты. -
Нажмите
Ctrl + Shift + J. Откроется чёрное окно консоли. -
Первый раз в этом браузере консоль не даст вставить команду — наберите руками
allow pastingи Enter (один раз на браузер, потом не нужно). Без этого будет ошибка. -
Вставьте строчку и нажмите Enter — она копирует только токен в буфер:
copy(JSON.parse(localStorage.__oneme_auth).token)
-
Внизу появится
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, и только потом — токен в появившееся окошко. В саму команду токен не вставляем.
-
Откройте
web.max.ru. Будет экран с QR. Так и нужно: значит, вы не залогинены. -
Нажмите
Ctrl + Shift + J. -
Если в этом браузере ещё не разрешали вставку —
allow pastingи Enter (как в Части 1). -
Вставьте команду и нажмите Enter (токен пока не трогайте):
m=prompt('Вставьте токен');if(m){localStorage.setItem('__oneme_auth',JSON.stringify({token:m.trim()}));location.reload()}
-
Выскочит окошко. В него вставьте токен из Части 1 и нажмите OK.
-
Страница перезагрузится и войдёт.

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

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

Готово: вошли без пароля, чаты загрузились.
Что важно понимать про сессию
Вход по токену с другого компьютера или браузера — для сервера это, по сути, тот же самый вход, что и по QR. Не новый, а тот же: оба браузера сидят на одном токене. Отсюда два следствия:
-
пока никто не нажимает «Выйти», сессия живёт и работает сразу везде, где вставлен токен;
-
как только кто-то один выйдет из аккаунта (или завершит сессию в настройках устройств) — токен становится недействительным сразу для всех браузеров, а не только у того, кто вышел.
Поэтому просто закрыть вкладку — безопасно, токен живёт дальше. А «Выйти из аккаунта» рвёт вход всем, кто сидит на этом токене.
Никакого волшебства. Это то, что MAX держит у себя сам, и любой DevTools показывает за десять секунд. Что делать с этим знанием — решайте сами.
ссылка на оригинал статьи https://habr.com/ru/articles/1045678/