> ~ biozz / Blog

Вот такой passline.ru

Не хакер, просто любознательный.

Ivan Elfimov, 2020-01-08, 2m (376 words)

Я ехал из дома после праздников. Сел в поезд Ярославль-Москва и айфон тут же предложил подключиться к сети RZD. Подключился, зашёл и меня сразу перенаправило на свежий веб-интерфейс. “Что-то новенькое от РЖД, почему бы и нет” подумал я и вспомнил недавнюю статью про исследование wi-fi сети на борту самолёта. Это был отличный шанс для меня сделать что-то похожее, ведь все новые приложения всегда будут содержать чуть больше недочётов и багов, чем те, которые провели какое-то время на бою.

Я залогинился, для этого потребовался номер паспорта, номер вагона и номер места. То есть после подключения про меня будет известно всё и скорее всего функционал уже будет привязан к этим данным.

Сразу заметил, что на вкладке приветствия иконка Vue.1

vue_favicon

На главной странице попробовал в случайном порядке посмотреть на элементы и заметил, что изображения и стили раздаются из неймспейса _nuxt, то есть используется Nuxt

nuxt_assets

Обратил внимание, что курсы валют не загрузились.

currencies_not_loaded ><

Посмотрел на запросы и увидел 502.

currency_502

Раз уж начал смотреть на урлы с API, то попробовал перебор ссылок. Ничего особенно интересного, только 404. Так со всеми случайными или более менее логичными путями (routes, route, stations и т.д. со слешами и без)

api_404

Вернулся на главную страницу портала. Там сразу перед футером увидел какие-то версии без всякого описания.

raw_versions

Открыл Networking и посмотрел на XHR запросы. Нашлись user_id.

user_id

И train_name:

train_name

Версии через слэш это скорее всего:

  • 1.4.0 - Nuxt (актуальная 2.11.0);
  • 2.4.1 - Vue (актуальная 2.6.11);
  • Остальные найти не удалось.

Кстати все API доступны из браузера.

browser_api

И работают даже без заголовков.

no_headers

Ещё одно доступное API увидел на странице маршрутов.1

routes_pretty

Это оказался практически один в один вывод ручки rotues/current. На фронте добавили только выбор таймзоны.

current_route

Кстати корзина почему-то на момент отправления не работала.

basket_not_found

А потом заработала.

basket_found

В запросах мелькает загадочный getping.json. Причём он раздаётся с nginx-а, это не API. Сначала подумал, что опечатка и попробовал перейти на похожий урл с /api/, но везде 404.

getping_json

Картиночки блюд в заказе еды не загрузились. А плейсхолдеры good как бы намекают.

food_not_found

Больше идей для исследования не было, так что на этом всё.

Что получилось узнать

  • Сделано на Vue и Nuxt;
  • API открыто частично и только необходимые ручки;
  • Функционал привязан к авторизации при входе в Wi-Fi сеть;
  • ЧТД ещё есть баги и портал будет обрастать функционалом.

  1. пару картинок случайно испортил серой обводкой, а обнаружил уже слишком поздно ↩︎ ↩︎