PDA

Просмотр полной версии : Xss-туннелинг: твой трафик в Xss канале


Mo4x
17.07.2007, 23:47
By Xakep.ру

Подразумевается, что читатель в курсе того, что такое XSS.

Для понимания того, что такое XSS туннель и как он работает прежде всего необходимо понять что такое XSS канал и как он работает.

Что такое XSS канал

XSS канал - интерактивный коммуникационный канал между двумя системами открытый при помощи XSS атаки. С технической точки зрения это тип AJAX приложения которое может принимать команды, посылать ответ и делать это между разными доменами.

XSS шелл это инструмент для установления XSS канала между жертвой и атакующим, так что нападающий получает контроль над броузером жертвы и может посылать ему команды. Соответственно коммуникация в таком случае двунаправленная.

Для получения XSS шелла необходимо внедрить соответствующий JavaScript при помощи XSS атаки. После загрузки скрипта хакер и получает контроль над броузером жертвы - он может видеть запросы, ответы серверов и может полностью управлять броузером.

Пример такой атаки приведен ниже:

http://www.xakep.ru/post/39274/XSS1.gif


Как работает XSS шелл

http://www.xakep.ru/post/39274/XSS2.gif

Приложения такого рода имеет три основных части.

Во-первых, серверная часть - она координирует обмен данными между нападающим и его жертвой. В данном случае ему требуется ASP и IIS, база MS Access для хранения данных.

Во-вторых - клиентская часть, написанная на JavaScript. Она загружается в броузер жертвы и отвечает за получение и обработку команд , обеспечивая существование канала между хакером и его жертвой. Код был протестирован под Firefox, IE 6 и 7.

Ну и наконец заключительная часть XSS шелла - административный интерфейс. Атакующий может посылать команды и получать ответы от жертвы мгновенно через свой интерфейс. Обратно используется ASP и IIS.

http://www.xakep.ru/post/39274/XSS1.jpg

Все следующие шаги не требуют непрерывного взаимодействия и непрерывно проверяют запросы и ответы с определенным временным интервалом.
Атакующий находит веб-сайт с XSS уязвимостью и возможностью вызова удаленного XSS шелла, JavaScript-а.
Жертва следуя линку или посещая страницу выполняет скрипт в пределах домена.
Броузер жертвы начинает выполнять периодические запросы к серверу XSS шелла для получения новых команд.
При получении таковых (например получить куки, выполнить JavaScript и т.п.) выполняет их и возвращает результаты к XSS шеллу.
Атакующий может передавать новые команды и получать результаты через административный интерфейс.

Почему это лучше классической XSS атаки?
Атакующий получает более "одного выстрела".
После заражения жертвы атакующий получает
ответ и может построить дальнейшие свои действия
основываясь на полученной информации и
складывающейся ситуации.Такая атака позволяет
обходить ограничения.Позволяет
получитьсвоеобразный XSS ботнет.

Что такое XSS туннелинг?

Соответственно XSS туннелирование - пропускание HTTP трафика через открытый XSS канал. XSS туннель - стандартный HTTP прокси, сидящий на системе хакера. Любая утилита, сконфигурированная на его использование, будет передавать данные через активный XSS канал на сервере XSS шелла. XSS туннель конвертирует запросы и ответы прозрачно для соответствия требованиям HTTP запросов и XSS шелла.

XSS туннель написан на .NET и конечно требует .NET Framework.

http://www.xakep.ru/post/39274/XSS2.jpg

Как работает XSS туннель

XSS туннель соединяется с определенным XSS шеллом и получает текущий активный идентификатор (жертву, которую будет контролировать).
Локальный HTTP клиент (броузер, сканер и т.д.) посылает HTTP запрос к XSS туннелю.

- Он конвертирует HTTP запрос в запросы, которые может понять и обработать XSS шелл. Затем он посылается на сервер XSS шелла.
- Сервер сохраняет запрос в базу (все запросы действительны только для определенной жертвы, его ID можно видеть в админке туннеля).
Клиент XSS шелла делает периодические запросы к серверу для получения команд. Процесс этот требует междоменного чтения, так что XSS шелл использует загрузку удаленных JavaScript-ов для обхода политики безопасности.

- Если есть какие-либо команды, клиент загружает их и обрабатывает и отправляет ответ на сервер.
XSS туннель проверяет сервер XSS шелла на наличие ответа на предыдущий запрос. Если он есть, то превращает его в правильный HTTP ответ и посылает клиенту. По умолчанию XSS туннель кэширует различные файлы для ускорения процесса и выдает их из кэша если они в нем существуют.

Схема атаки


Установить XSS шелл сервер.
Сконфигурировать XSS туннель на использование XSS шелл сервера.
Подготовить XSS атаку.
Запустить XSS туннель и ждать жертв.
Сконфигурировать программы или броузер на использование XSS туннеля.
При появлении жертвы в XSS туннеле, начать использовать сконфигурированную пунктом ранее программу.

Описанные инструменты ты можешь скачать тут:

http://www.portcullis-security.com/16.php

ZaCo
18.07.2007, 00:12
идея не новая, а вот исходники порадовали. но, к сожалению, имхо, штука не очень-то и действенная в реальной жизни. ввиду того, что каждый новый запрос добавляется в очередь, чтобы у вас страничка быстро загрузилась нужно, чтобы на зараженную страницу зашло через маленький промежуток подряд пользователей 50 для загрузки каждого отдельного элемента; в тоже время большое кол-во жертв будет использованно не эффективно... далее, тк запросы идут на уровне браузера используя ajax, то не ясно какой процент из браузеров жертв загрузит что-то удаленное вообще.

ZaCo
19.07.2007, 01:25
я про загрузку страницы (получение ее содержимого как значения) с удаленного доменного имени, например. практически не знаю ни аякса, ни яваскрипт, но врядли разработчики браузеров дураки и позволяют выполнять такие действия в соответствии со стандартными параметрами безопасности...

ZaCo
19.07.2007, 12:57
причем тут скрипт. я говорю про загрузку из браузера жертвы странички, запрашиваемой хэкером. как она загружается и ее содержимое передается шеллу?

ZaCo
19.07.2007, 13:18
напиши пожалуйста свои мысли на связанном русском языке или я напишу, что ты дурашка.
>>AJAX позволяет делать гет-пост запросы
>>в пределах домена
не надо меня убеждать в собственной правоте. я кажется это предположение написал еще в первом посте.
>>динамически подгружаем внешний скрипт
не тупи, я же ясно написал ДВА РАЗА, что меня интересует как ЖЕРТВА подгружает страничку необходимую хэкеру о отправляет ее СОДЕРЖИМОЕ на шелл, которое потом наблюдать можно через тунель.

зы у меня вопрос не по аяксу, а по логике вещей.
напиши ява-скрипт код, которой подгружает страничку с произвольного домена и заносит ее содержимое в переменную soderzhimoe. вот что меня интересует.

+toxa+
19.07.2007, 13:50
Первоисточники
http://ha.ckers.org/blog/20070710/xss-proxy-tunnelling/
http://www.securityfocus.com/archive/1/473312/30/0/threaded
http://ferruh.mavituna.com/makale/http-proxy-for-xss-channels/

ZaCo
19.07.2007, 16:13
>>выполняет необходимые действия с помощью или без помощи ajax в пределах домена
тогда я не пойму где тут тунель-то? или идея в том чтобы имея хсс на сайте организовывать ее безопасный просмотр?
>>С произвольного домена я не знаю как)(в обычном случае)
угу