Как открыть 1500 шлагбаумов Москвы

Marat_1162

Стаж на ФС с 2014 г
Private Club
Старожил
Migalki Club
Меценат💰️
Регистрация
25/3/16
Сообщения
4.649
Репутация
9.166
Реакции
22.743
RUB
0
Депозит
3 500 рублей
Сделок через гаранта
4
Случилось как-то, что рядом с нашим офисом жильцы соседнего дома поставили себе шлагбаум. С парковкой в центре Москвы и так проблемы, а если еще и офисное здание неподалеку...в общем, жильцов можно понять. Но не давало покоя ощущение, что доступ к шлагбаумам могут получить далеко не только жильцы дома.

Стало интересно, кто вообще занимается установкой шлагбаумов и насколько активно. Для этого выходим из офиса на улицу и проводим разведку по открытым источникам на местности:
Rjw7ZqGnku4.jpg

Компания, установившая шлагбаум

Переходим на сайт компании и продолжаем разведку уже в онлайне. Восклицательный знак в правом верхнем углу отправляет нас прямиком в "святая святых" любого веб-приложения - на страницу входа в админ-панель.
IyWfs-bj-n0.jpg

Админка для "старших по объектам"
Внизу можно увидеть едва заметную ссылку, предлагающую ознакомиться с возможностями личного кабинета в тестовом режиме. Почему бы и не ознакомиться?
CI4SUHibNcA.jpg

Вход в личный кабинент от имени тестового аккаунта

Переходим по очень интересному URL -https://lk.amvideo-msk.ru/index.php?login=tеst - и попадаем в админ-панель, как нам и обещали на предыдущей странице. На открывшейся странице в глаза бросается еще один пользователь test14. Сразу же хочется подставить test14 в "интересный" URL вместо test:
mOwrwuHaXF4.jpg

Успешно вошли от имени test14. Данных стало чуть больше - это видно даже визуально, но не прав доступа. Походим по админке от имени этого аккаунта, посмотрим, что есть. В списке шлагбаумов всего один с названием "ТЕСТ", "Список клиентов" явно тестовый, как и "История проездов", "Добавление клиентов" недоступно, да и вообще большинство действий блокируется сообщением с текстом "Недостаточно прав".

Осталась вкладка "Управление КПУ", но и там почти все действия заблокированы, кроме просмотра стрима с камеры, встроенной в шлагбаум, и получения состояния оборудования:
561hE953Kw0.jpg

Возможности тестового аккаунта
Немного странно, что эти действия были разрешены кому попало для вполне реального шлагбаума. Если можно смотреть стрим с камеры и получать состояние оборудования на одном КПУ(контрольно пропускное устройство), мешает ли что-то делать это на других? Посмотрим, как устроены запросы, которые отправляются при запросе стрима и состояния оборудования:
F42uVgB84IE.jpg

Структура двух HTTP-запросов, управляющих КПУ

В обоих случаях в HTTP-запросах фигурирует числовой идентификатор(!). Не остается выбора, кроме как попробовать поподставлять другие идентификаторы в запросы:
sH18Afh_FMQ.jpg

Просмотр чужих камер и состояния КПУ

Три случайно выбраных числовых идентификатора привели к трем разным объектам! От имени тестового пользователя! На самом нижнем шлагбауме даже видно, что из-за того, что статус панели - "не в сети", одна из камер не работает.

Интересно еще то, что запрос на получение состояния оборудования возвращает статусы только в том случае, если объект с переданным идентификатором существует. Благодаря этому можно "сбрутить" все идентификаторы КПУ простым перебором чисел, которых не сильно больше 1500, судя по данным (всего в Москве установлено ).
Выходит, в приложении компании по установке шлагбаумов есть некоторая системная уязвимость, из-за которой не проверяется, можно ли тому, КТО запросил, отдавать то, ЧТО он запросил, а значит приключение только начинается!

Читаем тикеты тех.поддержки (можно даже создавать тикеты-задачи от имени любого пользователя, в т.ч администраторов):
ZUeiKY4LxAo.jpg

Получаем адреса и телефонные номера шлагбаумов для их открытия:
YUl1dITgQ0c.jpg

Получаем списки жильцов на объектах с персональной информацией (номера машин, телефонов, квартир):
qw0OxHlvtJ0.jpg

И на этом уже можно было бы остановиться - каждый, кто "успел" собрать улов из номеров шлагбаумов и номеров жильцов, уже может открывать любой шлагбаум в удобное для него время с помощью SIP-сервисов для подмены номера, которых сейчас развелось предостаточно - , и тому подобные.

Но мы решили не останавливаться. Вишенкой на торте стал не сильно примечательный на первый взгляд эндпоинт редактирования информации о пользователе, при переходе на который визуально казалось, что ничего не происходит. Однако под капотом возвращались реальные данные(адрес, ник, email, фио) вместе с кодом редиректа 302 на index.php:
3A-ptcRrv6Y.jpg

Сервер отправил "домой" вместе с запрошенными данными
В этом эндпоинте, как и во всех других, передается числовой идентификатор.

Пройдясь по первой тысяче чисел (0-999), удалось многое узнать о пользователях данной системы - как развивалась схема имен с ростом компании, когда примерно никнеймы в виде телефонного номера начали вытеснять текстовые и даже то, как в некоторых случаях по никнейму можно определить адрес. Но самым важным обнаружением стал пользователь с ником test30.

В этот момент возникло непреодолимое желание вернуться в самое начало и подставить test30 теперь уже вместо test14 в URL авторизации. Результат был выше всяких ожиданий:
0R5H98yISPM.jpg

(не)Тестовый аккаунт

Мы попали не в очередной тестовый аккаунт, а в аккаунт с повышенными (сильно повышенными) правами - в аккаунт диспетчера всей системы!

Теперь стало возможным управлять любыми шлагбаумами без SIP-телефонии как независимо, так и массово :) Присутствие шлагбаумов компании в Москве выглядит довольно обширно:
Q3Ln9y2q-ZM.jpg

Шлагбаумы Москвы

Есть даже шлагбаумы в других городах, но там их не много. Полученные доступы такого уровня - не важно, жилец вы конкретного дома или просто проезжаете мимо - открывают для любого желающего "режим Бога" со следующими функциями:
  1. Скрытное открытие шлагбаумов (проезды не будут светиться в истории)Из веб-админкиЗвонком через SIP (с подмененного телефона жильца на телефон шлагбаума)В истории не фиксируются открытия только с номеров админов, это ок?
  2. Просмотр в реальном времени имен/телефонов/квартир проезжающих через шлагбаум
  3. Получение видео с камер шлагбаумовВ режиме реального времениЗа любой промежуток времени за последние 7 дней
  4. Чтение тикетов службы поддержки и создание тикетов от имени любого пользователя
  5. Получение конфиденциальной и технической информацииGeo-координаты всех шлагбаумовИнформация об аппаратуреВнутренние SIP-номера шлагбаумов и креды авторизации в SIPIP адреса камер и панелей управленияЛогины и пароли (в основном дефолтные) прямого доступа к аппаратуре (доступной через Интернет)К камерамК "микротикам" по SSHК Beward-панелям КПУCписки жильцов (телефоны и имена) по адресам с номерами квартир, а также номерами и марками автомобилейCписок объектовАдреса объектовТарифы на объектах и у пользователейНомера телефонов КПУ на объектах
  6. Рассылка Push-уведомлений на номера телефонов пользователей
  7. Редактирование и просмотр пользователейИзменение имени\телефона\emailВыдача\изъятие прав на платные действияОткрытие с мобильного приложенияСоздание одноразовых заявок на проездПросмотр видео с КПУ
  8. Создание новых пользователей на объектах
  9. Создание одноразовых заявок на проезд
  10. Просмотр созданных заявок на проезд (запланированные проезды)
  11. Звонки диспетчерам от имени любого шлагбаума через внутреннюю SIP-систему
  12. Перевод всей системы в аварийный режим или включение тестового режима
  13. Блокировка открытия шлагбаума и перезагрузка оборудования

Outro​

До начала исследования этой проблемы казалось, что софт для систем такого уровня поставляется строго в виде пакетных решений от производителей оборудования и не содержит самописных элементов в принципе, ведь при наличии таковых пришлось бы самостоятельно покрывать кучу разных издержек, в числе которых информационная безопасность. А для компании, у которой IT профиль не является основным, это непозволительная роскошь.

Но на практике мало кто об этом заботится, что в итоге может приводить к печальным последствиям, способным поставить под угрозу само существование компании.

Вся информация о найденных уязвимостях была передана разработчикам, а уязвимости - успешно и оперативно устранены к моменту публикации статьи. В ходе исследования не было скопировано ни бита информации.

На определенных этапах исследования не покидало ощущение, что в отдельных участках этой системы уже кто-то может обитать. Очень надеемся, что разработчики проведут более глубокий аудит с привлечением надежных специалистов и исправят то, что пока не было найдено.
 
Сверху Снизу