Итак:
Как показывает время, в ICQ с введением какой-либо новой функции открывается новая брешь в безопасности, взять хотя бы эту статью:
«Html-инъекция на страницах icq.com»
Взяв это за основу я начал свой research.
Что же нового в ICQ?
Внимательные пользователи с лёгкостью ответят на этот вопрос: «привязка номера ICQ к мобильному номеру своего телефона».
А вот какие функции при этом появились:
— Восстановление пароля через код высылаемый на мобильный.
— Логин(вход в ICQ) через код высылаемый на мобильный.
— Регистрация нового пользователя через код высылаемый на мобильный.
Начал я конечно же с восстановления пароля.
При вводе номера телефона привязанного к ICQ номеру на странице восстановления пароля www.icq.com/password/ мы видим страничку на которой нам будет предложено вести код который пришёл на мобильный, а также новый пароль.
При этом адрес данной страницы выглядит примерно так:
https://www.icq.com/password/resetcode/D5DCBDBAF629FE4A07FB8C790E9F9A6535A1FD2DCD78093E71C892844953EC82/ru
Данная ссылка живёт около 24 часов.
Самый важный кусок ссылки состоит из двух частей:
— Первый это или зашифрованная сессия или сам номер
D5DCBDBAF629FE4A07FB8C790E9F9A65
— Второй вообще непонятно что, абсолютно ни на что не влияющее. Этот кусок можно заменить на любой набор букв и цифр или даже просто обрезать
35A1FD2DCD78093E71C892844953EC82
А теперь вернёмся к тому что ссылка живёт около суток…
При восстановлении пароля через мобильный нам приходит код состоящий ИЗ ПЯТИ ЦИФР!
Первые тесты показали, что ограничений на ввод кода не было, но это было немного ошибочно. При вводе неверного кода страничка с ответом содержала картинку забавной улиточки и надпись «Ссылка, которую вы используете, уже устарела…»
При вводе верного кода страничка с ответом сообщала нам что пароль был успешно сменен
Вводя код вручную в браузере, бана невозможно было добиться, но автоматизировав этот процесс я увидел что бан наступал после пяти попыток, это был бан именно на ввод кода с одного IP и ссылка при этом не умирала. При бане страничка с ответом содержала коровку и надпись «К сожалению, вы слишком часто повторяете однотипное действие. Попробуйте делать это реже.»
Недолго думая я обратился к своему товарищу и он реализовал данную уязвимость в софте, который он ласково назвал «5digger», далее узнаете почему… Софт работал через proxy и поэтому бан по IP нам был не страшен 😉
И так, у нас есть довольно серьёзная дыра, но как же нам узнать номер телефона жертвы? Над этим нам немного пришлось поломать голову.
Помогла нам программа собирающие базы номеров и содержимого из их «инфо». Называется она «ICQ Search Info» автор .fry Данная программа каким-то непонятным мне образом видела номера телефонов владельцев, которые они указали в своей информации и которые по дефолту скрыты.
Мы сразу же принялись сканировать пятизнаки 😉 В итоге у нас получилась небольшая база uin;phone. К нашему сожалению она содержала кучу мусора, а также реальные номера владельцев, но при этом не привязанные к их номеру ICQ.
Так как мы люди ленивые я принялся искать форму через которую можно было проверить номер на регистрацию в ICQ. Как бы это было не банально, таковой оказалась форма регистрации: www.icq.com/join/ru
Простым запросом я смог быстро проверить свои номера
GET http://icq.com/join/send_sms_code/ru?msisdn=<phone>
Ответ сервера если номер незарегистрирован в icq сожержал такой вот набор символов
"status":200,"statusText":"Ok"
Получив валидную на 100% базу uin;phone я принялся за дело. Для начала я удалил все строки содержащие в себе русские номера, а именно начинающиеся на (+7)
Жертвами стали бывшие админы ICQ и их друзья с номерами телефонов начинающихся на (+9725), а также просто номера неизвестных иностранцев, хочу заметить, что первоначальная база содержала чуть меньше 10 строк…
Как только мы сменили пароль на первом админском номере которым оказался номер Avi Zrachya (это бывший админ ICQ из Израиля), а именно 34567, мы увидели что в его контакт-листе был просто невероятный порядок… В основном его контакт-лист состоял из его коллег и друзей. При этом все ники из «инфо» были заменены на реальные имена и фамилии, а также во многих номерах в «дополнительной информации» которую он самолично заполнил был виден номер телефона. Особенно меня порадовали группы «Asechka.ru», где были несколько моих товарищей, а также группа «Hackers», где был небезызвестный кроб хТ
В итоге я вытащил все номера телефонов проверил их уже описанным выше способом и дополнил свою базу, на этом всё не закончилось. Оказалось что у всех админов контакт-лист был примерно в одинаковом состоянии и из каждого мы смогли вытащить новые уникальные номера телефонов. Думаю дальнейшие наши действия и результат не стоит вам описывать так как все могут и без этого догадаться. Хочу добавить только то, что все используемые номера быстро вернулись своим хозяевам и это составило довольно большой процент… Данную уязвимость очень забавно пофиксили. Для начала запретили смену пароля, а также восстановления пароля у номеров ниже 7 цифр (у шести и пяти знаков). А потом при вводе неверного кода стала появляться надпись «неверный код» и бан был уже не по IP, а по вводу кода от определённой ссылки.
А теперь вернёмся к кое-какой забавной вещи которую я заметил
Помните запрос который я использовал для чека номеров на регистрацию? Так вот, лимита на отправку смс на один номер НЕ БЫЛО! Данная фича была сразу же реализована в флудер мобильных телефонов. Софт проработал около двух недель, а потом был введён лимит на отправку смс.
Продолжим!
На ввод кода подтверждения опять же не было лимита и при этом была возможность регистрировать огромные количества номеров без ввода капчи, и не имея при этом доступа к телефону указанному при регистрации. Для этого надо было собрать всего лишь переменную при отправке смс, которая называется «transid» т.е. собрать лист вида phone;transid, а дальше просто брутить(подбирать) коды по этому листу и постепенно регистрировать номера. Данная уязвимость возможно и сейчас есть, так как на момент написания статьи я её не проверял.
Теперь расскажу вам о функции логина через код высылаемый на мобильный
При вводе кода через сайт высылался или пяти или шести значный код подтверждения и пробовать подбирать его было немного геморно, учитывая то, что я уже нашёл такую же функцию только немного в другом месте. В клиентах ICQ 7M и ICQ 8 есть эта функция и при вводе мобильного там высылается 4 символьный код, подобрав который, вы получите все переменные для логина, точно уже не помню все их названия, помню только главную «sessionid». Данную уязвимость не стали реализовывать, так как не смогли разобраться с подписью запросов, но было бы забавно, если бы в один день в инфо нескольких десятков «элитных» номеров появилась шуточная надпись: «Hacked by Gay Nork Crew special for Asechka.ru»
Ну и напоследок ещё одна забавная фича
Если попытаться зайти с мобильного номера незарегистрированного в ICQ, код будет отправлен и при этом произойдёт регистрация нового номера. Так к чему я всё это?
Как только эта функция была введена, она работала так: этот самый четырёхзначный код устанавливался как пароль. Но продлилось это не долго, примерно с декабря 2012 до конца января 2013 года, представляете сколько номеров было зарегистрировано таким способом?
Немного поразмыслив я составил такую логическую цепочку: если номер зарегистрирован данным способом и имеет такой пароль, значит он не используется с момента регистрации → если номер не используется с момента регистрации значит дата последней смены информации о номере была примерно той же, что и дата регистрации!!!
К счастью всё тот же комбайн «ICQ Search Info» собирал базы вида uin;last profile update, собрав базу таких номеров, я прошёлся на пароли из диапазона 0000-9999 и увидел довольно симпатичные номера…
В данный момент если регистрация номера производится данным способом, то пароль на него не устанавливается. Зайти на такой номер можно используя всё те же одноразовые четырёхзначные коды или просто установив пароль пройдя процедуру «восстановления пароля» через мобильный телефон.
Вот такие вот интересности открыли нововведения в ICQ и я думаю подобного рода уязвимости довольно распространены. Если вдруг ваш сервис имеет данные функции, то обязательно проверьте их на «вшивость»!
ссылка на оригинал статьи http://habrahabr.ru/post/183190/
Добавить комментарий