Хабрахабр

Разработчик, помни — трафик твоего приложения смотрят

WOG

На данный момент существует так много типов уязвимостей, что разработчики совсем забывают об элементарных из них. На днях мне удалось обойти авторизацию в новом приложении WOG (ТОВ «ВОГ РІТЕЙЛ» — вторая по величине сеть АЗС в Украине). В 2017 году, точно такую же уязвимость я обнаружил в приложении одного из мобильных провайдеров Украины (тоже второго по величине). Идентичные ситуации — новое приложение и отсутствие защиты от брутфорса.
Не так давно мне пришло уведомление – компания выпустила новое приложение и предлагает его установить. Функционал приложения, честно сказать, мне понравился – просмотр бонусов на счету, за которые можно купить топливо. Возможность привязать банковскую карту и оплачивать товары безконтактно или по QR коду. Так же в профиле отображаются мои ФИО и контактные данные, полная история транзакций – список товаров и стоимость их на момент покупки.
Авторизация в приложении стала проще – теперь не нужно вводить номер карты лояльности, достаточно указать номер мобильного. Однако еще при входе я заподозрил, что мои данные может просмотреть кто угодно – я специально, более 5 раз, ввел код отличный от того, что пришел мне в СМС. Зачем? – Потому что ранее, в похожем приложении мобильного оператора, я нашел уязвимость, которая давала полный доступ к управлению счетом абонента.
Вводя некорректный код удалось выяснить, что защиты от брутфорса, вероятнее всего, нет.

Можно получить доступ к любому счету, и более того, «угнать» аккаунт — привязать на другой номер, потратить чужие средства. Я оказался прав — защиты у приложения нет.

У меня сложилось впечатление, что разработчики приложений напрочь забывают о том, что сетевой трафик не сложно перехватить, даже https запросы.

Что бы получить доступ к содержимому https запросов, помимо настроек прокси, в свойствах подключения смартфона, нужно дополнительно установить доверенный сертификат, который генерирует программа. Лично я использую программу fiddler – данный инструмент дает возможность проксировать трафик, просматривать его или менять.

Просто походив по URLам удалось выяснить, что на сервере живет IIS 7. В первую очередь меня порадовала самооценка разработчиков приложения – API, которое использует приложение, расположено на домене thebestapp4ever.wog.ua. 5 и 1C:Enterprise 8, а так же картинка из заголовка (возможно API писали фанаты Machinarium?).

И здесь первая уязвимость – отсутствие каких либо лимитов. Схема авторизации проста – запрос с «просьбой» отправить код в СМС летит на один из методов API. На один и тот же номер телефона, с одного IP можно «заказать» сколько угодно СМС.

Выходит, что уязвимость способна принести компании убытки в размере ~8200$ в день, если слать 12 запросов в секунду. Позже, в тендерах компании, я нашел информацию о том, что они планируют рассылать до 1 000 000 СМС в месяц (за год готовы потратить на это ~98 000$).

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

Очередная и самая критичная уязвимость была именно здесь – нет защиты от брутфорса. После того как пользователь получил СМС и ввел код в приложение, оно шлет запрос с целью проверки достоверности кода и получения токена. На подбор кода, который состоит из 4 (!) цифр, требуется совсем не много времени.

Один из которых дает возможность сменить PIN код от карты лояльности. Получив токен можно использовать другие методы API. Хочу акцентировать внимание на данном методе, поскольку здесь разработчик использовал еще один метод бесполезной «защиты». Процедура стандартная – введите старый PIN, введите новый. Идея хороша – просто перебрать комбинации 0000-9999 не получится. Естественно, защиты от брутфорса так же не было, зато старый пин отправлялся в скрытом виде. Без подстановок к нему соли или чего либо еще. Реализация плохая – вместо кода отправляется md5 хеш.

Честно сказать, я понятия не имею, как получить доступ к коду приложения и возможно ли это – так что даже устаревший md5 остановил бы меня, если бы использовалась соль.
Так же мне удалось не только сбрутфорсить токен для «чужого» аккаунта, но и подсунуть его в приложение – написал небольшой скрипт на node.js, который проксировал трафик и подменял только ответы метода gettoken.

Ребята резво отреагировали — контакты для общения я смог получить в течении суток. Статья написана после общения с «заместителем директора департамента ИТ» компании. Я тестил на номерах 095866...»
В отличии от компании WOG, начальник отдела ИБ оператора мобильной связи был куда разговорчивее, да и в качестве благодарности подогнали смартфон =) Отправил описание уязвимостей и вопрос про наличие bug bounty.
В ответ получил письмо с информацией о том, что меня, якобы, «засекли» — «Мы Вас (380958302---) увидели сразу и сработали блокировки… О всех блокировках рассказывать не буду, но за вчера их появилось достаточно большое множество»
Как по мне, больше похоже на мороз – ибо, как я и ответил на данное письмо, «шутка в том, что этот номер мне не знаком.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть