Что такое межсайтовый скриптинг (XSS) и как его предотвратить
- XSS-атака — это когда уязвимость веб-сайта или веб-приложения используется для внедрения вредоносного контента в веб-браузеры конечных пользователей.
- Существует три типа XSS-атак: хранимый (постоянный) XSS, отраженный (непостоянный) XSS и XSS на основе DOM.
- Меры по предотвращению XSS-атак необходимо выполнять как на веб-сайте, так и на устройстве конечного пользователя.
Кибератаки растут с каждым днем. Их не только становится больше, но и типы кибератак становятся все более изощренными.
Одной из таких атак является кибератака с использованием межсайтового скриптинга (XSS). В ходе этой атаки злоумышленник взломал уязвимый веб-сайт, веб-страницу или веб-приложение и внедрил вредоносный код в веб-браузер конечного пользователя. Эта атака может быть осуществлена для получения несанкционированного доступа к данным пользователей, которые посещают веб-сайт, дефейса веб-сайта или просто для получения доступа ко всему на веб-сайте, к которому у пользователей есть доступ.
XSS-атаки могут быть сложными и могут осуществляться без взаимодействия с пользователем. Это означает, что ваша сессия может быть взломана, просто посетив взломанный веб-сайт. Обратите внимание, что владелец веб-сайта может знать, а может и не знать, что на его сайт внедрено вредоносное ПО, и поэтому предотвращение XSS-атак так же важно для владельцев веб-сайтов, как и для конечных пользователей, посещающих взломанные веб-страницы.
Здесь мы говорим обо всем, что нужно знать о межсайтовом сценарии, о том, как он работает и что вы можете сделать, чтобы предотвратить его проникновение в ваш браузер (в случае конечных пользователей) или на ваш веб-сайт (если вы являетесь Владелец сайта).
Что такое межсайтовый скриптинг?
Все веб-сайты придерживаются единой политики происхождения (SOP). Согласно этой политике, все скрипты, которые могут быть выполнены на веб-сайте, должны происходить из одного и того же источника. Эта политика применяется для предотвращения выполнения сценариев с одного веб-сайта на другом. Однако веб-сайты, на которых не применяется эта политика, уязвимы для XSS-атак.
Атака с использованием межсайтового сценария очень похожа на атаку с помощью SQL-инъекции. Он использует неспособность браузеров различать безопасную и опасную разметку. Таким образом, они выполняют любой полученный текст разметки и предоставляют его конечным пользователям по запросу.
Если веб-страница или веб-приложение использует пользовательский ввод, который не подвергается очистке перед его выполнением, он подвержен атакам XSS.
XSS-атаки могут осуществляться с помощью CSS, VBScript, ActiveX, Flash и JavaScript. Однако JavaSCript является наиболее распространенной и наиболее предпочтительной платформой для атак XSS, поскольку она является фундаментальной практически для всех веб-браузеров.
Для чего используется межсайтовый скриптинг?
XSS-атаки могут осуществляться для разных целей. Хотя большинство атак осуществляются для получения учетных данных пользователя для входа в систему и доступа к информации, которую может видеть только пользователь, другие XSS-атаки могут осуществляться с целью простого повреждения веб-страницы или веб-приложения конкурента.
В других случаях XSS-атака также может быть осуществлена с целью финансовой выгоды или нарушения работы, но это в основном зависит от того, что это за веб-приложение.
Вот возможные причины, по которым может быть осуществлена XSS-атака:
- Выдавать себя за пользователя на сайте.
- Запишите учетные данные пользователя для входа.
- Выполняйте задачи, которые может выполнить только пользователь.
- Доступ к информации, доступной только пользователю.
- Испортить веб-страницу или веб-приложение.
- Украсть финансовую информацию ради личной выгоды.
- Получите доступ к личной информации (PII) или другим конфиденциальным данным.
Типы межсайтовых сценариев
Теперь, когда мы понимаем, что такое межсайтовый скриптинг, важно также знать, что он бывает разных типов. Эти типы различаются в зависимости от того, как происходит XSS-атака. Вот 3 основных типа XSS-атак:
- Сохраненная (постоянная) XSS-атака
- Отраженная (непостоянная) XSS-атака
- XSS-атака на основе DOM
Сохраненная (постоянная) XSS-атака
Хранимые или постоянные XSS-атаки — это атаки, при которых злоумышленник внедряет вредоносный код на сервер или в базу данных. Злоумышленник внедряет свой код на сервер уязвимого веб-сайта или веб-приложения, который затем переносится на компьютер пользователя (жертвы) при генерации запроса.
При атаках этого типа злоумышленник обычно использует и внедряет свой вредоносный код в места, доступные пользователям, например в поля для комментариев. Когда пользователь посещает скомпрометированный объект или взаимодействует с ним, вредоносный код передается на целевой компьютер, где он затем исполняется.
Отраженная (непостоянная) XSS-атака
Отраженные XSS-атаки называются так из-за их отражающего поведения. Этот тип XSS-атаки отражается от законного веб-сервера и включает в себя весь или часть исходного пользовательского ввода. Это могут быть сообщения об ошибках, результаты поиска и т. д. Здесь пользователя обманом заставляют щелкнуть вредоносную ссылку, которая затем вызывает доставку вредоносного кода на исходную веб-страницу, а затем попадает на целевой компьютер.
Затем вредоносное ПО автоматически запускается в веб-браузере, поскольку оно получено из надежного источника.
Обратите внимание, что рефлексивные XSS-атаки обычно осуществляются по другому маршруту, чем исходная веб-страница, которую посещает жертва. Они могут быть доставлены через вредоносную ссылку на странице ошибки или через фишинговые электронные письма.
XSS-атака на основе DOM
В таких атаках XSS злоумышленник изменяет объектную модель документа (DOM). Эти атаки очень похожи на отраженные XSS-атаки, поскольку они осуществляются через фишинговые электронные письма и вредоносные ссылки. Однако разница заключается в том, где выполняется вредоносный скрипт.
Вместо включения полезной нагрузки в HTTP-ответ доверенного веб-сайта атака осуществляется исключительно в веб-браузере путем изменения DOM. Обычно это можно сделать, если веб-приложение содержит клиентский JavaScript.
Как работает межсайтовый скриптинг
Как работает межсайтовый скриптинг
Мы узнали, что XS-атаки могут быть разных типов, в зависимости от того, где выполняется и где хранится код. Однако схема их функционирования во многом одинакова. Вот шаги для выполнения атаки с использованием межсайтовых сценариев:
Создание кода
Каждая XSS-атака предназначена для проникновения в специальную уязвимость на веб-странице или веб-сайте и ее использования. Поэтому после обнаружения уязвимости злоумышленник создает код для ее эксплуатации.
Внедрение кода/скрипта
После того, как код подготовлен, злоумышленнику необходимо внедрить его на веб-сайт. Его можно внедрить на сервер или поместить в интерактивный блок, чтобы он мог передаваться в целевой браузер при генерации запроса.
Передача вредоносного кода
Следующий этап включает перемещение кода в браузер пользователя для его выполнения. Это происходит, когда целевой пользователь нажимает на вредоносную ссылку или взаимодействует с кнопкой или диалоговым окном, которое передает вредоносный сценарий в целевой браузер, а затем автоматически выполняет его.
Кража данных
Этот шаг не всегда верен, так как зависит от скрипта, созданного злоумышленником. XSS-атака может украсть ваши данные, такие как файлы cookie, токены и другую конфиденциальную информацию.
Полученные результаты
На этом этапе код успешно выполнен и злоумышленник наконец получает то, что намеревался. Это может быть порча веб-сайта, кража данных пользователя или вход на веб-сайт в качестве законного пользователя для просмотра информации, доступной пользователям.
Как предотвратить атаки с использованием межсайтовых сценариев
Как упоминалось в начале статьи, межсайтовый скриптинг может нанести вред как веб-сайту, так и конечным пользователям. Таким образом, обеим участвующим сторонам необходимо максимально защитить свои активы от XSS-атак.
Обеспечьте безопасность веб-сайтов/веб-приложений от XSS-атак.
Тест на XSS-уязвимости
Первое, что должен сделать владелец веб-сайта, — это проверить свой сайт на наличие XSS-уязвимостей. Это уязвимости, которые могут быть использованы злоумышленниками для получения доступа к вашему веб-сайту и установки вредоносного кода.
Проверить сайт на наличие уязвимостей можно несколькими способами. Однако Открытый проект безопасности веб-приложений (OWASP) рекомендует вам использовать Методы тестирования «черного ящика» для проверки XSS-уязвимостей. Обратите внимание: при выполнении этих тестов тестировщик должен исходить из того, что сам браузер не сможет предотвратить атаки.
Проверка переменных
Проверка переменной — это метод определения того, соответствует ли ввод заданным критериям. Обеспечение поступления в ваше приложение только безопасных и хорошо организованных данных поможет снизить вероятность проникновения вредоносного кода.
Чтобы убедиться, что адрес электронной почты соответствует тому, который ожидает пользователь, используйте фильтры или регулярные выражения. Избегайте деликатных процедур и, если формат отличается от ожидаемого, покажите пользователю предупреждение.
Выходное кодирование
Кодирование вывода — еще одна защита от XSS-атак. Прежде чем представлять динамический материал в формате HTML на своем веб-сайте (например, комментарии), его необходимо правильно закодировать. Чтобы браузер не интерпретировал специальные символы как код, специальные символы должны быть закодированы в другие безвредные эквиваленты.
Благодаря кодированию теги сценариев в материалах пользователей гарантируют, что они отображаются как обычный текст, а не выполняются как сценарии. Чтобы помочь разработчикам обеспечить безопасное кодирование, OWASP предоставляет «шпаргалка», из которого вы можете извлечь выгоду.
HTML-дезинфекция
Очистка HTML — это процесс удаления любых скриптов или других элементов из созданного пользователем HTML-кода, которые могут быть опасны для веб-сайта. Обеззараживание HTML служит защитой, устраняя или нейтрализуя любые потенциальные угрозы, прежде чем пользовательский ввод будет показан на вашем веб-сайте.
Например, очистка HTML гарантирует, что читателям будет показан только безопасный контент, отфильтровывая любые вредоносные компоненты или характеристики из сообщения блога, содержащего HTML-код, созданный пользователем. Поступая так, вы обеспечиваете безопасность своего веб-сайта и защищаете посетителей от потенциально вредоносных скриптов.
Для очистки HTML в веб-приложениях крайне важно использовать надежные, хорошо поддерживаемые библиотеки. OWASP рекомендует ДОМОчистить как практическое решение в борьбе с XSS-атаками.
Атрибуты файлов cookie
Файлы cookie используются для отслеживания перемещения в Интернете и сохранения предпочтений пользователей. Установка атрибутов меняет способ взаимодействия JavaScript и веб-браузеров с файлами cookie.
Атрибуты файлов cookie призваны снизить эффект XSS-атаки, но они не останавливают выполнение вредоносного материала и не устраняют основную проблему уязвимости.
Политика безопасности контента (белый список)
Белый список или белый список — это стратегия защиты от кибербезопасности, позволяющая только определенным IP-адресам, доменным именам и т. д. иметь доступ к определенным данным. В случае с веб-сайтом белый список становится списком загружаемых объектов. Все, кроме них, не будет загружено на веб-страницу или веб-приложение; как вредоносный скрипт.
Это методы, которые вы можете использовать для защиты вашего веб-приложения или веб-сайта от XSS-атак. Обратите внимание, что существуют и другие стратегии, которые не ограничиваются этими основными задачами.
Предотвращение выполнения XSS-атак в браузерах
Повысьте безопасность браузера
По умолчанию в большинстве веб-браузеров действуют умеренные, а не самые строгие политики безопасности. Если вы не повысите безопасность своего браузера, вы с большей вероятностью подвергнетесь XSS-атакам.
Если вы не знали, большинство современных веб-браузеров имеют встроенные настройки безопасности, которые позволяют усилить их защиту. Таким образом, вы можете запретить файлам cookie отслеживать вашу онлайн-активность, автоматически блокировать всплывающие окна и уменьшить поверхность атаки для вредоносных программ. Некоторые браузеры даже способны блокировать вредоносные файлы и контент, определяя, что они не заслуживают доверия или не подписаны.
Обычно настройки безопасности по умолчанию мягкие. Вы можете вручную изменить эти параметры в настройках браузера. Например, в Google Chrome вы можете перейти в Настройки >> Конфиденциальность и безопасность >> Безопасностьи выберите «Улучшенная защита», чтобы максимально повысить вашу веб-безопасность.
Повышение безопасности браузера Включить SmartScreen
Если вы используете Microsoft Edge в качестве веб-браузера, вам следует включить СмартЭкран. SmartScreen обеспечивает веб-безопасность на ходу, сканируя веб-сайты и загружая вредоносные файлы.
SmartScreen защищает от фишинга и вредоносных веб-сайтов, автоматически обнаруживая и блокируя вредоносный контент. Он использует список сайтов с вредоносным программным обеспечением и программ, о которых известно, что они небезопасны, чтобы перепроверить, не загрузили ли вы их случайно. Та же логика применяется и к файлам.
Выполните следующие действия, чтобы включить SmartScreen в Microsoft Edge:
Откройте Microsoft Edge.
Нажмите на 3 точки в правом верхнем углу, а затем нажмите Настройки.
Открыть настройки Edge
Нажмите «Конфиденциальность, поиск и услуги” слева.
Прокрутите вниз до Безопасность раздел и переключите ползунок перед «SmartScreen Защитника Microsoft» в На позиция.
Включить SmartScreen защитника Microsoft
Повысьте уровень безопасности в Интернете
Операционная система Windows также имеет уровень безопасности на основе зон. Это означает, что вы можете изменить уровень безопасности Интернета.
По умолчанию этот параметр «Средней высоты», который позволяет загружать потенциально небезопасный контент только с предупреждением и подходит для большинства веб-сайтов. Однако, изменив его на «Высокий» обеспечит максимальную безопасность и подходит даже для вредоносного контента.
Чтобы изменить уровень безопасности в Интернете, выполните следующие действия:
нажмите Клавиша Windows + Р чтобы открыть окно «Выполнить команду».
Введите “inetcpl.cpl» и нажмите Входить чтобы открыть апплет «Свойства Интернета».
Откройте апплет «Свойства Интернета».
Переключитесь на Безопасность вкладка.
Выбирать “Интернет».
В “Уровень безопасности для этой зоны» перетащите ползунок в верхнее положение.
Увеличьте настройки интернет-безопасности
Теперь нажмите «Применять” и “Хорошо», чтобы изменения вступили в силу.
Остерегайтесь спама/фишинга
Фишинг — это метод, с помощью которого злоумышленники могут получить вашу личную или цифровую информацию. Например, они могут отправлять вам ссылки на вредоносные веб-сайты, которые выдают себя за законные, чтобы вы могли ввести правильные данные для входа, которые затем будут доступны злоумышленникам.
В случае XSS-атак вам могут быть отправлены фишинговые электронные письма с вредоносными ссылками, которые перенаправляют вас на веб-сайты, которые инициируют XSS-атаку, как в случае с отраженными XSS-атаками.
Завершающие слова
Межсайтовый скриптинг сегодня может быть одним из самых опасных типов кибератак. Он может не только украсть конфиденциальную информацию, но и использовать ее для выполнения других вредоносных действий. Более того, XSS-атаки используются для распространения вредоносного контента и скриптов. Это делает их отличным инструментом для распространения других червей и вирусов.
Тем не менее, независимо от того, являетесь ли вы конечным пользователем или владельцем веб-сайта/веб-приложения, вам важно защитить свои активы от XSS-атак. Обеспечение максимальной безопасности может повысить ваши шансы на защиту от кибератак, но все равно не уменьшит их полностью.