Межсайтовое выполнение сценариев (Cross-site Scripting или XSS)

Межсайтовое выполнение сценариев (Cross-site Scripting или XSS). Наличие уязвимости Cross-site Scripting позволяет атакующему передать серверу исполняемый код, который будет перенаправлен браузеру пользователя. Для написания подобного кода обычно используются HTML/JavaScript, но могут быть применены и VBScript, ActiveX, Java, Flash и др.

Межсайтовое выполнение сценариев (Cross-site Scripting или XSS)

Межсайтовое выполнение сценариев (Cross-site Scripting или XSS)

Переданный код исполняется в контексте безопасности (или зоне безопасности) уязвимого сервера. Используя текущие привилегии, код получает возможность читать, модифицировать или передавать важные данные, доступные с помощью браузера (здесь совсем не грех будет вспомнить, что, если вы работаете с правами администратора, шансов попасться на такой крючок больше). При данном виде атаки у атакованного пользователя может быть скомпрометирована учетная запись (кража cookie), его браузер может быть перенаправлен на другой сервер или осуществлена подмена содержимого сервера. В результате тщательно спланированной атаки злоумышленник может использовать браузер жертвы для просмотра страниц сайта от имени атакуемого пользователя. Передача кода в таких случаях осуществляется через URL, в заголовках HTML-запроса (cookie, user-agent, refferer), значениях
полей форм и т. д.

Существует два типа атак, приводящих к межсайтовому выполнению сценариев:

1. постоянные (сохраненные);
2. непостоянные (отраженные).

Основным различием между ними является то, что в отраженном варианте передача кода серверу и возврат его клиенту осуществляются в рамках одного HTTP-запроса, а в сохраненном – в разных. Осуществление непостоянной атаки требует, чтобы пользователь перешел по ссылке, сформированной злоумышленником (ссылка может быть передана по электронной почте, ICQ и т. д.). В процессе загрузки сайта код, внедренный в URL или заголовки запроса, будет передан клиенту и выполнен в его браузере. Сохраненная разновидность уязвимости возникает, когда код передается серверу и сохраняется на нем на некоторый промежуток времени. Наиболее популярными целями атак в этом случае являются форумы, почта с веб-интерфейсом и чаты. Что самое интересное в данном случае? Следующее: для атаки пользователю не обязательно переходить по ссылке – достаточно посетить уязвимый сайт!

За примерами далеко ходить не приходится: многие сайты имеют доски объявлений и форумы, которые позволяют пользователям оставлять сообщения. Зарегистрированный пользователь обычно идентифицируется по номеру сессии, сохраняемому в cookie. Если атакующий оставит сообщение, содержащее код на языке JavaScript, он получит доступ к идентификатору сессии пользователя. Многие серверы предоставляют пользователям возможность поиска по содержимому сервера. Как правило, запрос передается в URL и содержится в результирующей странице.

К примеру, при переходе по URL http://portaLexample/search? q="fresh beer" пользователю будет отображена страница, содержащая результаты поиска и фразу По вашему запросу fresh beer найдено 0 страниц. Если в качестве искомой фразы будет передан JavaScript-код, он выполнится в браузере пользователя.

Яндекс.Метрика