Подразумевается, что читатель в курсе того, что такое XSS. Для понимания того, что такое XSS-туннель и как он работает, прежде всего необходимо понять, что такое XSS-канал и как он работает.
Что такое XSS-канал
XSS-канал - интерактивный коммуникационный канал между двумя системами, открытый при помощи XSS-атаки. С технической точки зрения, это тип AJAX-приложения, которое может принимать команды, посылать ответ и делать это между разными доменами.
XSS-шелл - это инструмент для установления XSS-канала между жертвой и атакующим, так что нападающий получает контроль над броузером жертвы и может посылать ему команды. Соответственно, коммуникация в таком случае двухнаправленная.
Для получения XSS-шелла необходимо внедрить соответствующий JavaScript при помощи XSS-атаки. После загрузки скрипта хакер и получает контроль над броузером жертвы - он может видеть запросы, ответы серверов и может полностью управлять броузером.
Пример такой атаки приведен ниже:
Как работает XSS-шелл
Приложение такого рода имеет три основных части.
Во-первых, серверная часть - она координирует обмен данными между нападающим и его жертвой. В данном случае ему требуется ASP и IIS, база MS Access для хранения данных.
Во-вторых - клиентская часть, написанная на JavaScript. Она загружается в броузер жертвы и отвечает за получение и обработку команд, обеспечивая существование канала между хакером и его жертвой. Код был протестирован под Firefox, IE 6 и 7.
Ну и, наконец, заключительная часть XSS-шелла - административный интерфейс. Атакующий может посылать команды и получать ответы от жертвы мгновенно через свой интерфейс. Обратно используется ASP и IIS.
Все следующие шаги не требуют непрерывного взаимодействия и непрерывно проверяют запросы и ответы с определенным временным интервалом.
1.Атакующий находит веб-сайт с XSS-уязвимостью и возможностью вызова удаленного XSS-шелла, JavaScript-а.
2.Жертва, следуя линку или посещая страницу, выполняет скрипт в пределах домена.
3.Броузер жертвы начинает выполнять периодические запросы к серверу XSS-шелла для получения новых команд.
4.При получении таковых (например, получить куки, выполнить JavaScript и т.п.) выполняет их и возвращает результаты к XSS-шеллу.
5.Атакующий может передавать новые команды и получать результаты через административный интерфейс.
Почему это лучше классической XSS-атаки?
Атакующий получает более "одного выстрела". После заражения жертвы атакующий получает ответ и может построить дальнейшие свои действия, основываясь на полученной информации и складывающейся ситуации.
Такая атака позволяет обходить ограничения.
Позволяет получить своеобразный XSS-ботнет.
Что такое XSS-туннелинг?
Соответственно, XSS-туннелирование - пропускание HTTP-трафика через открытый XSS-канал. XSS-туннель - стандартный HTTP-прокси, сидящий на системе хакера. Любая утилита, сконфигурированная на его использование, будет передавать данные через активный XSS-канал на сервере XSS-шелла. XSS-туннель конвертирует запросы и ответы прозрачно для соответствия требованиям HTTP-запросов и XSS-шелла. XSS-туннель написан на .NET и, конечно, требует .NET Framework.
Как работает XSS-туннель
1.XSS-туннель соединяется с определенным XSS-шеллом и получает текущий активный идентификатор (жертву, которую будет контролировать).
2.Локальный HTTP-клиент (броузер, сканер и т.д.) посылает HTTP-запрос к XSS-туннелю.
- Он конвертирует HTTP-запрос в запросы, которые может понять и обработать XSS-шелл. Затем он посылается на сервер XSS-шелла.
- Сервер сохраняет запрос в базу (все запросы действительны только для определенной жертвы, его ID можно видеть в админке туннеля).
3. Клиент XSS-шелла делает периодические запросы к серверу для получения команд. Процесс этот требует междоменного чтения, так что XSS-шелл использует загрузку удаленных JavaScript-ов для обхода политики безопасности.
- Если есть какие-либо команды, клиент загружает их и обрабатывает и отправляет ответ на сервер.
4.XSS-туннель проверяет сервер XSS-шелла на наличие ответа на предыдущий запрос. Если он есть, то превращает его в правильный HTTP-ответ и посылает клиенту. По умолчанию XSS-туннель кэширует различные файлы для ускорения процесса и выдает их из кэша, если они в нем существуют.
Схема атаки
1.Установить XSS-шелл сервер.
2.Сконфигурировать XSS-туннель на использование XSS-шелл сервера.
3.Подготовить XSS-атаку.
4.Запустить XSS-туннель и ждать жертв.
5.Сконфигурировать программы или броузер на использование XSS-туннеля.
6.При появлении жертвы в XSS-туннеле, начать использовать сконфигурированную пунктом ранее программу.
Описанные инструменты ты можешь скачать тут:
http://www.portcullis-security.com/16.php