Уязвимости Ритейлеров — Три Случая, Когда Otp Можно Было Получить В Запросе

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

в самом запросе.

Ниже приводится краткое описание того, что это означает, на конкретных примерах.

1. Популярная сеть АЗС, более 500 000 зарегистрированных клиентов.

Запрос при входе в веб-версию личного кабинета:

  
  
  
  
   

POST https://someazs.ua/ua/profile/auth/ Accept: application/json, text/javascript, */*; q=0.01 Accept-Encoding: gzip, deflate, br Accept-Language: ru,en-US;q=0.9,en;q=0.8,uk;q=0.7 Connection: keep-alive Content-Length: 408 Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Cookie: PHPSESSID=6n3l2o90hfb020u9ag020u8ha1; usersomeazs_popupcoupons=1;.

Host: someazs.ua Origin: https://someazs.ua Referer: https://someazs.ua/ua/login/ User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 X-Compress: null X-Requested-With: XMLHttpRequest data[phone_mask]: 951234567 data[phone]: 0951234567



Уязвимости ритейлеров — три случая, когда OTP можно было получить в запросе

Отвечать:

{"Status":0,"Code":"7038","status":true,"step2":true}

Код из СМС — 7038 — просто виден в ответе сервера.

То есть на сайте при входе в личный кабинет в ответе был одноразовый код входа, который отправляется клиенту по СМС - можно было зайти в чужой аккаунт, указав только номер телефона клиента - и посмотреть OTP в самом запросе.

В личном кабинете доступны: номер карты лояльности, ФИО, балансы (бонус в гривне, литре, кофе), история транзакций, в настройках - дата рождения, e-mail клиента и т.д.

Уязвимости ритейлеров — три случая, когда OTP можно было получить в запросе

С помощью дальнейших нетехнических действий (например, обзвона клиентов), при должном везении, можно будет использовать клиентские деньги/литры/кофе.

Почему я пишу «если повезет»? Когда я рассказал о проблеме, мне сообщили, что расчеты с чужими бонусами не так-то просто произвести, даже если у вас есть доступ к своему аккаунту, так как есть дополнительные проверки.

Тем не менее… Ошибку быстро исправили и поблагодарили.




2. Сеть социальных магазинов (аналогично Фиксированная цена ), мобильное приложение (более 100 тысяч скачиваний)

Уязвимости ритейлеров — три случая, когда OTP можно было получить в запросе

Отслеживая запросы через Fiddler, я заметил следующее.

При входе в мобильное приложение после ввода номера телефона и карты лояльности клиенту отправляется одноразовый код. Проблема в том, что это делает запрос GET типа:

https://bulk.somesmssender.com/Эsending_method=sms&from=someretailes&user=onviber4821&txt=%D0%9A%D0%BE%D0%B4+%D0%BF%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F%3A+1234&phone=380987654321&sign=42f66957a03090eb90556b0ef7fed2e1

Прямо в этом запросе виден сам одноразовый код: текст отправленного СМС

%D0%9A%D0%BE%D0%B4+%D0%BF%D0%BE%D0%B4%D1%82%D0%B2%D0%B5%D1%80%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F%3A+1234&

Простой отчет о конвертации: Код+подтверждение:+1234.

Уязвимости ритейлеров — три случая, когда OTP можно было получить в запросе

Те.

В самом приложении вы можете увидеть, какой код будет отправлен.

Здесь также можно заходить в чужие аккаунты, без второго фактора.

По определенным причинам клиенты этой сети наименее защищены от мошенничества, поэтому я много раз пытался передать информацию в компанию.

Я трижды писал в августе на адрес, который был указан на странице приложения в Плей Маркете - не получил ни одного ответа, даже автоматического.

Позже я написал в компанию, чьей службой SMS-сообщений они пользуются.

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

Это правда, но я предполагал, что служба обмена сообщениями может повлиять на них как на партнера/клиента.

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

Я предположил, что сервису было бы целесообразно подправить логику рассылки - не передавать в запросе и номера телефонов клиентов, и одноразовый код - но мне не ответили.

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

Но так как я упрямый, то нашел на этом же сайте все возможные контакты (и общие ящики, и личные адреса) и написал им - как вы понимаете, тоже никто не ответил.

Поэтому позже я обратился в чат и прямо в чате задал вопрос, получили ли они мои письма.

Сначала ответили, что не видели, потом нашли и пообещали, что сдадут. Интересно, что помимо отсутствия ответа на письмо, отправленное на основной адрес приложения, после общения в чате мне приходили письма.

В одном из них я видел, как меня ввели в систему: «Умник»

Уязвимости ритейлеров — три случая, когда OTP можно было получить в запросе

Так себе отношение к клиенту.

Последний раз, когда я проверял, исправления от Аврора не было.

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




3. Мобильное приложение для хранения дисконтных карт и осуществления мобильных платежей (более 130 тыс.

клиентов) При входе вам нужно только ввести свой адрес электронной почты и код. При этом выполняется следующий запрос:

POST http://api.somewallet.com/mobileclient.svc/getRegistrationCode HTTP/1.1 Content-Type: application/json; charset=UTF-8 Content-Length: 100 Host: api.somewallet.com Connection: Keep-Alive Accept-Encoding: gzip User-Agent: okhttp/3.12.3 {"request":{"Culture":"ru_RU","DeviceIdentifier":"4514825570005447","Identifier":"some@email"}}

Вот ответ:

{"GetRegistrationCodeResult":{"ErrorMessage":{"Code":0,"LogReferenceId":0,"Message":"SUCCESS"},"Data":{"Code":"044912"}}}

Здесь в ответе также можно увидеть код, который необходимо ввести (044912).

После входа в систему мне были доступны следующие функции:

  • просмотр карт лояльности и бонусов по ним,
  • купоны для определенных магазинов,
  • контактная информация о клиенте (номера телефонов и адрес электронной почты, дата рождения и ФИО),
  • установка, изменение и удаление 4-значного кода доступа,
  • просмотр платежных карт,
  • получение платежного токена (аналог токена из моей предыдущей статьи) Как ездить в такси за чужой счет ).

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

Проблема идентична двум другим.

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




Можно сказать, что иногда в сервисах можно обойти двухфакторную аутентификацию, просто просмотрев запросы на авторизацию.

И этому подвержены как веб-сайты, так и мобильные приложения.

Так что в следующий раз, когда вы будете разрабатывать или тестировать сервисы, имеющие личный кабинет, обратите на это внимание.

Теги: #информационная безопасность #платежные системы #Тестирование веб-сервисов #Тестирование мобильных приложений #уязвимости #торговля #двухфакторная аутентификация

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.