Безлимитное облако и заурядные уязвимости +13





Волей случая наткнулся на приложение «IngoMobile» компании Ингосстрах.


И как это обычно бывает, я достал из широких штанин mitmproxy и тут началось самое интересное.



Статей как пользоваться mitmproxy и как с помощью него находить уязвимости уже достаточно много, например вот, так что перейдем к сути.


Безлимитное облако


Покопавшись немного в запросах приложения, мне на глаза попался обычный запрос обновления пользовательского аватара:


https://ingomobile.ingos.ru/api/user/profile/avatar

Ответ:


{
  "header": {
    "error_code": 0
  },
  "data": {
    "id": "81738613503"
  }
}

Пробуем загрузить файл, отличный от изображения — успех. Единственное ограничение такого облака: размер файла порядка 20-30 Мб.


Заурядные уязвимости


Так, файл мы загрузили, а как скачать? Пожалуйста:


https://ingomobile.ingos.ru/api/file/{id}

https://ingomobile.ingos.ru/api/file/81738613503

Здорово, а если id перебрать? То можно многое узнать.
Метод отдачи файла не контролирует доступ к нему.
Таким образом, за небольшой промежуток времени удалось обнаружить:


  • Сканы паспортов, птс и ср, водительских удостоверений, договоров купли продажи и т.д.
  • Расчеты страховой премии
  • Фотографии всего, что страхуют, до и после страховых случаев
  • Письма(.msg outlook), запросы, поручения и прочая приватная информация
  • Ссылки на оплату и счета об оплате
  • Прочие файлы

Схожие проблемы есть и у остальных методов api, самый примечательный из них:


policies/info/bank_card/{id}

который отдает такие поля, как:


card_valid_thru, card_number, card_holder

но к сожалению(или к счастью) мне не удалось подобрать нужный id.


Другие проблемы коснулись регистрации и номера телефона пользователя.
При регистрации от нас просят паспортные данные:


{
  "last_name": "К",
  "first_name": "К",
  "middle_name": "К",
  "doc_series": "3214",
  "doc_num": "567890",
  "doc_date": "21.11.2018",
  "doc_issued_by": "12",
  "birthday": "21.12.1998",
  "city_id": "33209416",
  "mail": "c7015346@urhen.com"
}

И мы получаем в ответ что-то вроде:


{
  "header": {
    "error_code": 0
  },
  "data": {
    "ais_user_id": "10596623603",
    "user_id": "628001203",
    "found": false
  }
}

Казалось бы, все хорошо, но нет.
Знаете ФИО клиента, но нет серии и номера паспорта? Перебирайте их в запросе на регистрацию, пока не получите "found": true.


Далее у нас на очереди смена номера телефона. Запрос на изменение номера выглядит следующим образом:


{"ais_user_id":"10596638503", "phone": "9628112489"}

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


В чем соль?


Уязвимости очевидны, и как можно было их допустить — не понятно.
Зачем писать статью о таких простых уязвимостях?
Они до сих пор не пофикшены. Немного хронологии:


  • 2 ноября 2019 уведомляю на почту об уязвимостях, получаю автоматический ответ.
  • 5 ноября 2019 пишу в сообщения сообщества вк, получаю чуть менее, но все же автоматический ответ.
  • 8 ноября 2019 пишу в вк и на почту подробный обзор уязвимостей.
  • 18 ноября 2019 звоню в поддержку, уже лучше.
  • 19 ноября 2019 получаю письмо "Мы получили ваш отчет и передали нашим специалистам на анализ и исправление.".
  • 20 декабря 2019 все на своих местах.

Если Вы клиент Ингосстрах, есть ненулевая вероятность, что все переданные компании данные давно утекли.


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


P.S. Кстати о соли, ребята зачем-то делают в приложении md5 от пароля, перед тем как отправить на сервер, наверное для безопасности.


Но не делают этого на сайте, из-за чего пароли расходятся, и чтобы войти на сайт, надо самому сделать md5 с солью.

Вы можете помочь и перевести немного средств на развитие сайта



Комментарии (3):

  1. arozhankov
    /#21059092 / +2

    Я правильно понимаю, что утечка персональных данных (сканов паспортов) уже нарушение закона?

    Я к тому, что следующим шагом после игнорированием ТП Ингосстраха сообщенных уязвимостях, лучше всего обратиться в правоохранительные органы для прекращения нарушений/работы данного сервиса?

    Получится и людям хорошо (владельцам документов в открытом доступе) и компания получит достаточно ощутимый толчок к более быстрому реагированию и недопущению подобного в будущем.

  2. vlsinitsyn
    /#21059528

    Как это все мило, однако. Такая незамутненная детская непосредственность.

  3. Sayaka
    /#21059604

    Ой зря вы с ними Связались. Ждём теперь от Ингостраха судебного иска, за взлом, сам сказал, сам покаялся, а чинить, да это потом как-нибудь…