Статьи Xss-туннелинг: твой трафик в Xss канале

Discussion in 'Статьи' started by Mo4x, 17 Jul 2007.

  1. Mo4x

    Mo4x VX-эпоха перемен

    Joined:
    18 Feb 2007
    Messages:
    369
    Likes Received:
    194
    Reputations:
    -21
    By Xakep.ру

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

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

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

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

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

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

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

    [​IMG]


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

    [​IMG]

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

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

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

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

    [​IMG]

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

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

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

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

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

    [​IMG]

    Как работает 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
     
  2. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    идея не новая, а вот исходники порадовали. но, к сожалению, имхо, штука не очень-то и действенная в реальной жизни. ввиду того, что каждый новый запрос добавляется в очередь, чтобы у вас страничка быстро загрузилась нужно, чтобы на зараженную страницу зашло через маленький промежуток подряд пользователей 50 для загрузки каждого отдельного элемента; в тоже время большое кол-во жертв будет использованно не эффективно... далее, тк запросы идут на уровне браузера используя ajax, то не ясно какой процент из браузеров жертв загрузит что-то удаленное вообще.
     
  3. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    я про загрузку страницы (получение ее содержимого как значения) с удаленного доменного имени, например. практически не знаю ни аякса, ни яваскрипт, но врядли разработчики браузеров дураки и позволяют выполнять такие действия в соответствии со стандартными параметрами безопасности...
     
  4. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    причем тут скрипт. я говорю про загрузку из браузера жертвы странички, запрашиваемой хэкером. как она загружается и ее содержимое передается шеллу?
     
  5. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    напиши пожалуйста свои мысли на связанном русском языке или я напишу, что ты дурашка.
    >>AJAX позволяет делать гет-пост запросы
    >>в пределах домена
    не надо меня убеждать в собственной правоте. я кажется это предположение написал еще в первом посте.
    >>динамически подгружаем внешний скрипт
    не тупи, я же ясно написал ДВА РАЗА, что меня интересует как ЖЕРТВА подгружает страничку необходимую хэкеру о отправляет ее СОДЕРЖИМОЕ на шелл, которое потом наблюдать можно через тунель.

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

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,028
    Reputations:
    1,228
    Первоисточники
    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/
     
    _________________________
  7. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    >>выполняет необходимые действия с помощью или без помощи ajax в пределах домена
    тогда я не пойму где тут тунель-то? или идея в том чтобы имея хсс на сайте организовывать ее безопасный просмотр?
    >>С произвольного домена я не знаю как)(в обычном случае)
    угу