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

в 19:49, , рубрики: api, wog, брутфорс, информационная безопасность, мобильное приложение, разработка мобильных приложений, уязвимость
WOG

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

Не так давно мне пришло уведомление – компания выпустила новое приложение и предлагает его установить. Функционал приложения, честно сказать, мне понравился – просмотр бонусов на счету, за которые можно купить топливо. Возможность привязать банковскую карту и оплачивать товары безконтактно или по QR коду. Так же в профиле отображаются мои ФИО и контактные данные, полная история транзакций – список товаров и стоимость их на момент покупки.
Авторизация в приложении стала проще – теперь не нужно вводить номер карты лояльности, достаточно указать номер мобильного. Однако еще при входе я заподозрил, что мои данные может просмотреть кто угодно – я специально, более 5 раз, ввел код отличный от того, что пришел мне в СМС. Зачем? – Потому что ранее, в похожем приложении мобильного оператора, я нашел уязвимость, которая давала полный доступ к управлению счетом абонента.
Вводя некорректный код удалось выяснить, что защиты от брутфорса, вероятнее всего, нет.

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

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

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

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

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

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

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

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

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

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

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

Автор: Samber

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js