XSS – WEB = Cross-Applications Scripting

XSS – WEB = Cross-Applications Scripting

Трудно сказать в какой момент WEB стало одним из наиболее приоритетных направлением развития коммуникаций. Сейчас различные компоненты WEB-технологий используются для решения гораздо более сложных задач, чем классическая раздача гипертекстовых документов через 80й TCP порт. Что только не творят разработчики: генерируют HTML и XML отчеты, используют клиентские компоненты в своих приложениях, туннелируют в HTTP трафик приложений (от RPC over HTTP просто голова идет кругом)… Однако кроме заметных преимуществ мы получаем и довольно неприятную ситуацию, когда уязвимости, обычные для WEB-приложений начинают появляться в совершенно неожиданных местах. Закройте Internet Explorer (вставтье_здесь_свой_любимый_браузер) и посмотрите за запущенные приложения. Какие из них могут обрабатывать содержимое HTML?

(c)oded by QQLan@yandex.ru 2005

С переполнением буфера сейчас стало туго. Пользователи понаставили себе всевозможных «персональных файрволов», в компиляторы внедряют всяческие хитрые препроцессоры, сходящие с ума при виде strcpy и контролирующие перезапись системных данных в стеке. Даже Microsoft, и тот что-то встроил в Service Pack 2 для Windows XP. Можно конечно поиграть в кошки-мышки с разработчиками, но не всегда в этом есть необходимость.

Наследование кода - наследование граблей

Трудно сказать в какой момент WEB стало одним из наиболее приоритетных направлением развития коммуникаций. Сейчас различные компоненты WEB-технологий используются для решения гораздо более сложных задач, чем классическая раздача гипертекстовых документов через 80й TCP порт. Что только не творят разработчики: генерируют HTML и XML отчеты, используют клиентские компоненты в своих приложениях, туннелируют в HTTP трафик приложений (от RPC over HTTP просто голова идет кругом)… Однако кроме заметных преимуществ мы получаем и довольно неприятную ситуацию, когда уязвимости, обычные для WEB-приложений начинают появляться в совершенно неожиданных местах. Закройте Internet Explorer (вставтье_здесь_свой_любимый_браузер) и посмотрите за запущенные приложения. Какие из них могут обрабатывать содержимое HTML? Если у вас запущен почтовый клиент, то наверняка он понимает хотя бы базовые теги. Открыт Explorer, Word? Все эти программы содержат клиентские компоненты WEB-приложений. Очень часто, разработчики, не мудрствуя лукаво, используют для рендеринга HTML страниц уже готовые модули, входящие в стандартную поставку операционной системы. В мире Windows это естественно – COM объект Internet Explorer, встроенный в графический интерфейс приложения. Это очень удобно для программиста, ведь ему не надо мучится с оформлением GUI, в его распоряжении богатые возможности языка HTML. Программа формирует отчет, отображаемый во внедренном объекте Internet Explorer, полученная страница в дальнейшем с легкостью может быть сохранена в файле или импортирована в другие программы. Недавно, при проведении сравнения сканеров уязвимостей, было обнаружено, что многие из них используют для генерации и отображения отчетов описанный подход. К примеру, Internet Explorer используется для просмотра результатов сканирования в таких программах как EEYE Retina, ISS Internet Scanner, PTSecurity XSpider, SPI Dynamic WebInspect и даже Nessus имеет возможность сохранять результаты сканирования в HTML. Сканнеры a priory работают с потенциально опасным содержимым и должны тщательно проверять полученную информацию перед отображением. Но некоторые из перечисленных продуктов не удаляют из результатов сканирования потенциальное небезопасные символы, что приводит к классической ситуации Cross-Site Scripting.

Наступаем на грабли миноискателем

Давайте рассмотрим сканнер WebInspect – мощный инструмент для проверки защищенности WEB-приложений, состоящий из «паучка», составляющего карту сайта, сканнера уязвимостей, и ряда дополнительных компонентов, таких как proxy с возможностью модификации запросов, декодер и т.д. По результатам работы сканнер составляет отчет, содержащий информацию о найденной уязвимости, а так же ссылку, указывающую на страницу, где уязвимость была обнаружена (Рисунок 1).

Рисунок 1. Информация о найденной уязвимости

Отображаемый в отчете URL берется из информации о структуре сайта, полученных «паучком», и помещается в отчет без должной обработки (Рисунок 2).

Рисунок 2. HTML-код отчета

Если URL уязвимой страницы будет создан достаточно тщательно, то при просмотре отчета в консоли управления будет выполнен сценарий. Представьте себе ситуацию: администратор сканирует сервер, обнаруживает в нем XSS и - БАБАХ – сценарий с сервера выполняется на его компьютере. Сценарий запускается в зоне безопасности My Computer, при чем, такая полезная функция как My Computer Security Zone Lockdown, входящая в Service Pack 2 для Windows XP вам не поможет, поскольку приложение является «доверенным» и никакие ограничения применены не будут. Со всеми вытекающими последствиями (Рисунок 3).

Рисунок 3. XAS при просмотре отчетов WebInspect

Обратите внимание на тот факт, что отображаемый отчет сохраняется во временном файле (C:\Program files\SPIdinamics\WebInspect\Working\Vulnerability.htm), что наводит на мысль об ещё одной уязвимости, характерной для Web – предсказуемое расположение ресурсов. Кроме того, папка Program Files защищена списками контроля доступа, которые запрещают обычному пользователю модифицировать в ней данные. Как следствие - аудитор запускает WebInspect с высокими привилегиями, иначе он просто не сможет с ним работать. Минимум – Power User, а на практике - администратор. Локальный. В лучшем случае. Этот факт весьма на руку злоумышленнику, поскольку он знает, что внедряемый сценарий выполнится на машине аудитора с правами, достаточными для решения любых задач. Еще одна полезная функция, которую предоставляет Web Inspect – это Browser, воспользовавшись которой человек, проводящий сканирование, может просмотреть содержимое Web-страниц, сохраненное «паучком». Разработчики, предполагая возможные проблемы с безопасностью в реализации этой функции, блокируют активное содержимое в отображаемых страницах. Однако при этом используется неоднократно обсуждавшийся подход фильтрации содержимого. Т.е. WebInspect пытается «вырезать» потенциально опасные теги, такие как script или object и тому подобное (Рисунок 4).

Рисунок 4. Все что осталось от сценария

Соответственно, для реализации XSS злоумышленнику достаточно создать страницу с использованием любой хорошо известной техники обхода контентной фильтрации. Недолго думая я проверил десяток широко известных методов кодирования сценариев. Как думаете, сколько из них обошло фильтр WebInspect? Не прошли только различные варианты с картинками, их сканнер не сохраняет (Рисунок 5). И как можно догадаться, локальная копия просматриваемого файла сохраняется в папке Working.

Рисунок 5. XAS функции Browsing

Компания SPIDynamic долго пыталась воспроизвести данную проблему, после чего просто перестала отвечать на запросы. Видимо обиделись на то, что в ответ на вопрос об «impact of this vulnerability» я прислал пример отчета, пытающийся отформатировать жесткий диск. Наверное, скрипт отработал, и они потеряли email. Вообще-то удивляет, что компания, серьезно занимающаяся безопасностью Web, допускает такие ляпы. Кстати, в Nessus (по крайней мере, его в клиенте для Windows), такой трюк бы не прошел, поскольку он только сохраняет HTML файл, а открывает его сам пользователь, что позволяет задействовать механизм «My Computer Security Zone Lockdown», входящий в XP SP2/W2K3 SP1. Conclusion – bad design.

Грабли для высокопоставленных лиц

Порой XAS появляется в более забавных ситуациях. Запустите оснастку редактора групповых политик (gpedit.msc) и перейдите в раздел настройки административных шаблонов. С левой стороны основного окна вы увидите название выбранного параметра или группы, и его подробное описание. По сути, эта часть оснастки представляет собой экземпляр Internet Explorer, отображающий страницу, динамически формируемую на основе шаблона, хранящегося в ресурсе res://c:\WINDOWS\system32\mmcndmgr.dll/views.htm (Рисунок 6).

Рисунок 6. IE в оснастке gpedit.msc

Как видно из рисунка, страница формируется с помощью сценария, модифицирующего её содержимое во время выполнения на основе данных из административного шаблона. Это, видимо, сделано для того, чтобы дать авторам административного шаблона возможность разукрашивать подсказку разными цветами (сморите, у меня операционные системы выделены красненьким, чудно, не так ли?). Но что произойдет, если «плохой парень» вместо полезных объяснений важности того или иного параметра добавит в шаблон парочку «нехороших» тегов? Абсолютно правильно, они отработают в зоне безопасности My Computer без ограничений (рисунок 7).

Рисунок 7. XAS в gpedit.msc

Но как эксплуатировать эту уязвимость? Стоять над администратором с пистолетом в руке и заставлять его добавлять в групповую политику страшный шаблон (при этом, подсказывая ему, куда кликать мышкой)? Не лучший путь. Кроме вполне очевидных ситуаций загрузки шаблона из Internet, существует ряд более интересных сценариев эксплуатации этой уязвимости.

Представьте, что вы – «Мистер обновить все-что-только-можно в компании за 60 микросекунд». Вы работаете в сети со сложной структурой Active Directory, и некоторым пользователям делегированы права на редактирование параметров групповых политик для своего организационного подразделения. Администратором подразделения «Свалка» является молодой перспективный специалист, господин Bad Guy (далее просто «г-н Б.Г.»). В один прекрасный день, запустив сканнер уязвимостей (конечно же, MBSA), вы обнаруживаете, что на компьютерах в OU «Свалка» не установлены последние обновления. Как верный приверженец Trustworthy Computing вы не можете перенести этого безобразия, и, проклиная тот день, когда разрешили человеку, не имеющему звания MCSA администрировать политики, запускаете верный GPMC (через RunAs, конечно через RunAs, вы не работаете на своей рабочей станции с правами Domain Admin). Вы открываете объект групповой политики «Stuff GPO» на вашей машине, и… Г-н Б.Г. начинает хулиганить на полную катушку (угадайте с какими правами?). Этот путь довольно сложен и требует от злоумышленника достаточно высоких привилегий. Однако описанную уязвимость можно эксплуатировать, имея права простого доменного пользователя с административными правами на данном конкретном компьютере (что, согласитесь, не редкость). Представьте, что вы – «Мистер MCSE начиная с Windows 3.11», анализируя журналы аудита, обнаруживаете, что г-н Б.Г., не смотря на жесткие ограничения через Software Restriction Policy, все же запускает на своем компьютере Counter Strike. Что бы понять причину сбоя в применении политик, вы открываете оснастку Resultant Set of Policy, в результате чего на вашей машине выполняется заложенный в административный шаблон сценарий (Рисунок 8).

Р

Рисунок 8. XAS в оснастке RSoP

Это происходит, потому что для отображения результирующей политики используется тот же компонент, что и в gpedit.msc. Кроме того, при формировании RSoP учитывается и локальная политика, а если на машине, где запущен RSoP, отсутствует используемый в Local Policy шаблон, он автоматически загружается с анализируемой машины.

Если вдруг у читателя возникнет исконно русский вопрос: «Что делать?», автор не станет рекомендовать переходить на альтернативные сканеры и редакторы групповых политик, а только разведет руками. Хотя, верите, или нет, у автора на машине отключен Active Scripting в зоне My Computer. Не смотря на XP SP2.

PS. Приведенные примеры выбирались из множества обнаруженных автором XAS исходя из двух критериев: забавности и трудности эксплуатации. Не рассказывать же, в конце концов, как ломать тетю Асю или справочную систему Windows (Рисунок 9). Им и без меня достаётся.

Рисунок 9. PS…

PPS. Согласен с возражениями. Ничего нового. До того как его вынесли в Restricted Sites, Outlook Express представлял собой прекрасный образец XAS. Все новое…
"Лаборатория Касперского" - международная компания-разработчик программного обеспечения для защиты от вирусов, хакеров и спама. Продукты компании предназначены для широкого круга клиентов - от домашних пользователей до крупных корпораций. В активе "Лаборатории Касперского" 16-летний опыт непрерывного противостояния вирусным угрозам, позволивший компании накопить уникальные знания и навыки и стать признанным экспертом в области создания систем антивирусной зашиты.

Компания SoftKey – это уникальный сервис для покупателей, разработчиков, дилеров и аффилиат–партнеров. Кроме того, это один из лучших Интернет-магазинов ПО в России, Украине, Казахстане, который предлагает покупателям широкий ассортимент, множество способов оплаты, оперативную (часто мгновенную) обработку заказа, отслеживание процесса выполнения заказа в персональном разделе, различные скидки от

Академия Информационных Систем (АИС) создана в 1996 году и за время работы обучила свыше 7000 специалистов различного профиля. АИС предлагает своим партнерам десятки образовательных программ, курсов, тренингов и выездных семинаров. Сегодня АИС представлена направлениями: «Информационные технологии», «Дистанционное обучение в области ИТ», «Информационная безопасность, «Управление проектами», «Бизнес-образование», «Семинары и тренинги», «Экологические промышленные системы», «Конференции», «Консалтинг» и «Конкурентная разведка на основе Интернет».

Ваш провайдер знает о вас больше, чем ваша девушка?

Присоединяйтесь и узнайте, как это остановить!