Содержание статьи
Подразумевается, что читатель в курсе
того, что такое 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.
Все следующие шаги не требуют
непрерывного взаимодействия и непрерывно
проверяют запросы и ответы с определенным
временным интервалом.
- Атакующий находит веб-сайт с XSS-уязвимостью и возможностью вызова
удаленного XSS-шелла, JavaScript-а. - Жертва, следуя линку или посещая
страницу, выполняет скрипт в пределах
домена. - Броузер жертвы начинает выполнять
периодические запросы к серверу XSS-шелла
для получения новых команд. - При получении таковых (например,
получить куки, выполнить JavaScript и т.п.)
выполняет их и возвращает результаты к XSS-шеллу. - Атакующий может передавать новые
команды и получать результаты через
административный интерфейс.
Почему это лучше классической XSS-атаки?
- Атакующий получает более "одного
выстрела". После заражения жертвы
атакующий получает ответ и может
построить дальнейшие свои действия,
основываясь на полученной информации и
складывающейся ситуации. - Такая атака позволяет обходить
ограничения. - Позволяет получить своеобразный XSS-ботнет.
Что такое XSS-туннелинг?
Соответственно, XSS-туннелирование -
пропускание HTTP-трафика через открытый XSS-канал. XSS-туннель - стандартный HTTP-прокси,
сидящий на системе хакера. Любая утилита,
сконфигурированная на его использование,
будет передавать данные через активный XSS-канал на сервере XSS-шелла. XSS-туннель
конвертирует запросы и ответы прозрачно
для соответствия требованиям HTTP-запросов и
XSS-шелла.
XSS-туннель написан на .NET и, конечно, требует
.NET Framework.
Как работает XSS-туннель
- XSS-туннель соединяется с определенным XSS-шеллом и получает текущий активный
идентификатор (жертву, которую будет
контролировать). - Локальный HTTP-клиент (броузер, сканер и т.д.)
посылает HTTP-запрос к XSS-туннелю.- Он конвертирует HTTP-запрос в запросы,
которые может понять и обработать XSS-шелл.
Затем он посылается на сервер XSS-шелла.
- Сервер сохраняет запрос в базу (все
запросы действительны только для
определенной жертвы, его ID можно видеть в
админке туннеля). - Клиент XSS-шелла делает периодические
запросы к серверу для получения команд.
Процесс этот требует междоменного чтения,
так что XSS-шелл использует загрузку
удаленных JavaScript-ов для обхода политики
безопасности.- Если есть какие-либо команды, клиент
загружает их и обрабатывает и отправляет
ответ на сервер. - XSS-туннель проверяет сервер XSS-шелла на
наличие ответа на предыдущий запрос. Если
он есть, то превращает его в правильный HTTP-ответ и посылает клиенту. По умолчанию XSS-туннель кэширует различные файлы для
ускорения процесса и выдает их из кэша,
если они в нем существуют.
Схема атаки
- Установить XSS-шелл сервер.
- Сконфигурировать XSS-туннель на
использование XSS-шелл сервера. - Подготовить XSS-атаку.
- Запустить XSS-туннель и ждать жертв.
- Сконфигурировать программы или броузер
на использование XSS-туннеля. - При появлении жертвы в XSS-туннеле, начать
использовать сконфигурированную пунктом
ранее программу.
Описанные инструменты ты можешь скачать
тут: