Категории

XSS-атака

Что вы знаете о XSS-атаках? С их помощью вредоносный код можно без особых заморочек внедрить на сайт и получить доступ к серверу. Поэтому, новый материал будет крайне полезен для вебмастеров всех уровней. Кликаем по ссылке ниже, переходим и читаем.

Что такое XSS-атака

XSS-атака — это один из видов атак на онлайн-системы, который переводится, как «межсайтовый скриптинг». Такие атаки подразумевают внедрение вируса в код сайта-жертвы с дальнейшим получением доступа к удаленному серверу после открытия зараженной страницы пользователем. Вообще аббревиатура расшифровывается, как Cross-Site Scripting, но принято говорить именно «XSS-атака», ведь в противном случае возникнет путаница с CSS.

Принцип работы межсайтового скриптинга

Ключевая цель XSS — украсть куки пользователя с помощью встроенного на сервер скрипта. После получения этих данных злоумышленник проводит их выборку, сортировку, а затем использует для дальнейших атак и взломов с применением уже другого программного обеспечения и подходов. При этом, атака выполняется не напрямую, а через «дыры» (уязвимости) сайта, на который заходят пользователи-жертвы. При этом, атакованный сайт становится по сути невольным соучастником преступления.

 

XSS-атаки безопасны для сервера, где располагается сайт, но несут угрозу непосредственно посетителям этого сайта. Но случается и такое, что злоумышленнику удается украсть данные администратора зараженного ресурса и, как следствие, он получает полный доступ к админке и содержимому сайта. Кроме того, если поисковые системы обнаружат на сайте вредоносный код, этому проекту 100% грозит пессимизация

Метод реализации XSS-атаки

Вредоносный код для осуществления межсайтового скриптинга пишется на языке JavaScript и запуститься он может исключительно в браузере жертвы. Поэтому ресурс, который открывает пользователь, должен быть незащищенным от XSS (быть уязвимым к такого рода атакам). 

 

Поэтому чтобы совершить XSS, первым делом злоумышленник проводит поиск сайтов, уязвимых к скриптингу. Делается это либо вручную через поиск, либо с помощью автоматизированных приложений. Как правило, тестируются стандартные формы, через которые выполняется отправка/прием запросов: система поиска по сайту, комментарии, обратная связь и т.п. Обычно злоумышленники выполняют проверку на уязвимость к XSS через Internet Explorer.

 

В ходе такого «исследования» выполняется сбор данных со страниц с формами ввода и каждая из таких страниц сканируется на наличие уязвимостей к XSS. К примеру, на вашем сайте есть страница для поиска по блогу. Чтобы проверить ее на уязвимость к скрипту, нужно использовать запрос: 

 

<script>alert(«cookie: «+document.cookie)</script>

 

Если на дисплее появляется окно с сообщением об обнаруженной уязвимости, нужно срочно предпринимать меры. Если бреши нет, вы просто увидите привычную страницу с поиском.

 

Если сайт управляется какой-то популярной CMS, то бреши быть не должно, так как современные системы управления контентом сайта надежно защищены от XSS. Но, если вы расширяли функциональные возможности своего сайта при помощи каких-либо плагинов, модулей и дополнений, которые были разработаны сторонними веб-программистами, есть риск обнаружения уязвимости к XSS. А особенно это касается доработок для WordPress, Joomla, DLE и Bitrix. 

 

Альтернативный вариант поиска бреши на сайте — использование страниц, работающих с GET-запросами. К примеру, мы имеем ссылку http://site.com/catalog?p=7. В браузерной строке вместо идентификатора «7» мы вписываем скрипт «><script>alert(«cookie: «+document.cookie)</script>, после чего получаем ссылку вида http://site.com/catalog?p=»><script>alert(«cookie: «+document.cookie)</script>. Если на этой странице будет обнаружена уязвимость, на дисплее появится уведомление с соответствующей информацией. 

 

Разумеется, злоумышленники используют для поиска брешей на сайтах массу различных скриптов с запросами и, если вдруг ни один из них не дает желаемого результата, значит атаковать сайт с помощью XSS не получится, так как он имеет надежную защиту.

Классификация XSS

Не существует какой-то четкой классификации для межсайтового скриптинга. Но эксперты выделяют 3 ключевые вида XSS-атак. Рассмотрим их.

1. Постоянные (хранимые)

Один из наиболее опасных типов уязвимости, ведь такая брешь дает злоумышленнику доступ к серверу, после чего он сможет управлять с него своим вирусным кодом (например, модифицировать его). Каждый раз в процессе обращения к сайту выполняется код, который был загружен раньше. Он работает в фоновом режиме, автоматически. 

 

Обычно такие бреши можно обнаружить на страницах сайтов с формами для подтверждения каких-либо операций, блогами с функциями комментирования, порталами и т.п. Причем, вредоносные скрипты в таких случаях можно будет максимально легко и просто встроить не только в текст на странице, но и в графику и прочий контент.

2. Непостоянные (отраженные)

В таком случае вредоносный скрипт играет роль запроса жертвы к сайту с вирусом. Все функционирует по такой схеме:

  1. Злоумышленником формируется УРЛ, содержащий вредоносный код.
  2. Этот УРЛ отправляется жертве, которая кликает по нему и переходит на сайт.
  3. Сайт автоматически получает информацию из вредоносного УРЛа и подставляет жертве ответ в виде модифицированного УРЛа.
  4. В результате браузер на компьютере жертвы выполняет скрипт злоумышленниками и он получает все куки пользователя. 

3. DOM

Это некий совмещенный вариант, подразумевающий использование и непостоянных, и постоянных XSS-атак. Работает такая методика следующим образом:

  1. Злоумышленником формируется ссылка, на которую заранее «вешается» вредоносный код.
  2. Эта ссылка отправляется потенциальной жертве любым доступным методом: по электронной почте, через мессенджер, чат и т.п.
  3. Жертва кликает по ссылке и переходит на зараженный сайт. Этот сайт принимает запрос без вредоносной строчки.
  4. На стороне пользователя выполняется вредоносный код, загружается скрипт и злоумышленнику становятся доступны куки жертвы.

Типы XSS по методу взаимодействия

У злоумышленника есть одна главная цель — заставить жертву запустить вредоносный код на своем компьютере. И опираясь на этот факт, можно выделить еще 2 вида XSS-атак — по методу взаимодействия.

Активные

Злоумышленник не используется какие-либо методы заманивания жертвы, ведь вредоносный код встроен в базу данных сайта или размещается на сервере в каком-то исполняемом файле. Пользователь, чтобы стать жертвой, не должен совершать какие-то активные действия.

 

К примеру, формы ввода данных. Обычно они имеют определённые обработчики событий, которые автоматически запускаются, когда пользователь открывает страницу. И как итог — абсолютно все пользователи, которые откроют эту страницу, станут жертвами злоумышленника.

Пассивные

Чтобы стать жертвой, пользователю нужно выполнить определенное действие — чтобы запустить обработчик событий и вредоносный скрипт, расположенный в форме. Для таких атак обычно применяют специальные решения по типу массовой отправки писем с просьбой кликнуть по ссылке и кликнуть на какой-то области страницы. 

 

Как только жертва откроет такое письмо, перейдет по ссылке и кликнет там, где ее просили, запускается вредоносный скрипт. Если же потенциальная жертва не выполняет никаких действий, то и скрипт не будет запущен.

Проверка сайта на наличие уязвимости к XSS и защита от атак

Чтобы быстро проверить свой сайт на уязвимость к XSS-атакам, можно использовать специальные сервисы, которые автоматически просканируют ресурс и все его страницы. Обязательно нужно проверять абсолютно все ссылки сайта, которые используются для отправки данных со стороны посетителя (формы обратной связи, какие-либо другие формы, поля для комментирования, строка поиска и т.п.). Но здесь важно понимать, что ограничиваться каким-то одним сервисом нельзя. То есть здесь нужен комплексный подход — точно так же, как при аудите сайта.

 

Также нужно понимать, что никакие сервисы не способны дать максимально полную информацию о ресурсе и его «дырах», поэтому дополнительно следует протестировать потенциально уязвимые страницы вручную. Параллельно нужно убрать все опасные спецсимволы, заменив их альтернативными безопасными (например, скобки <>, в которых прописываются HTML-теги и запросы). Если таких символов очень много, можно выполнить быструю фильтрацию и автозамену. Для этого используйте на своем сайте код:

 

$filter = array(«<«, «>»);

$_GET[‘q’]=str_replace ($filter, «|», $_GET[‘q’]).

 

Еще несколько полезных советов по «убережению» своего проекта от XSS-атак:

  1. Если на страницах ресурса используется ввод данных со стороны пользователя, тогда обязательно нужно включить кодирование этих данных.
  2. Если по каким-либо причинам кодирование использовать нельзя (например, это просто неуместно в конкретном случае), нужно заменить его валидацией.
  3. Обработка данных всегда должна выполняться в коде максимально безопасно. И это касается не только сервера, на котором работает сайт, но и браузера клиента.
  4. Используя для управления сайтом одну из популярных CMS (WordPress, Joomla, Bitrix и т.п.), нужно постоянно обновлять движок и все установленные на нем дополнения, плагины, модули, расширения и т.д. И помните — все современные системы для управления контентом сайта уже имеют встроенную защиту от XSS-атак, но плагины и прочие вспомогательные «плюшки» могут не иметь такой защиты. Поэтому скачивать дополнения нужно исключительно из проверенных источников.

Добавить комментарий

Ваш адрес email не будет опубликован.

7 − пять =

Оглавление