XSS атаки и их опасность.

XSS атаки и их опасность.

Kevin Mitnick

Что значит XSS

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




Как же они выглядят ?

XSS атаки бывают 2 видов:

  1. Stored(Пассивные)
  2. Reflected(Активные)


Stored XSS Атаки

Данная форма довольна проста в практическом объяснении: хакер на вашем сайте в любом поле где он может ввести нужный код на JS(Javascript), допустим 


И у нас есть типичный пользователь и он как-то взаимодействует с этим кодом допустим кликает на это поле и он активирует JS и таким образом он перехватываем слепок браузера(cookie, пароли, логины, историю браузера, ip адрес, полные данные о браузере) юзера.

Но в ход уже идет социальная инженерия и психология, например, важное письмо от администрации сайта или письмо типа “Вы победитель перейдите по ссылке получить свой приз”. Соответственно, нужно знать адрес или просто устроить спам-рассылку или разместить пост на каком-нибудь популярном форуме, да еще и не факт что жертвы окажутся наивными и перейдут по вашей ссылке, но как я уже сказал это этап социальной инженерии и психологии.


Причем пассивной уязвимости могут быть подвержены как POST так и GET-параметры. С POST-параметрами, понятно, придется идти на ухищрения. Например, переадресация с сайта злоумышленника(это когда вы на жимаете на ссылку типа https://www.google.com, а переходите на сайт хакера.


Reflected(Активные)


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

Он может быть заражен или занесен, например, с помощью внедрения SQL-кода (SQL Injection). Поэтому, не стоит доверять данным, хранящимся в БД, даже если при вставке они были обработаны.


Рассмотрим что может быть украдено и насколько это опасно для нас.


Кража Cookies


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


Кража данных из форм


Ищем форму через, например, getElementById и отслеживаем событие onsubmit. Теперь, перед отправкой формы, введенные данные отправляются также и на сервер злоумышленника, то есть все введенные данные например от банковской карты были переданы на сайт в котором вы вели и злоумышленнику. Пользователь отследить это практически не может.


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


DDoS-атака

XSS-уязвимость на высокопосещаемых ресурсах может быть использована для проведения DDoS-атаки. Суть проста — много запросов, которые не выдерживает атакуемый сервер.

То есть XSS-уязвимость даст дорогу для проведения DDoS-атаки, что дает возможность контролировать сайт, по скольку после DDoS-атаки идет перезапуск сервера на котором находится сайт и можно взять его под контроль, как и данные который на нем находились.