Полное руководство по XSS. Часть 1
Атакующий, в общем случае, напрямую не нацелен на конкретную жертву. Вместо этого он эксплуатирует уязвимость в коде сайта, который посещают люди. Для браузера жертвы вредоносный код является частью сайта и поэтому сайт выступает в роли “носителя вируса“.
Единственный путь для атакующего запустить вредоносный JS-код в браузере жертвы – это внедрить его в одну из страниц, которую может загрузить жертва с сайта. Подобная атака становится возможной, если на сайте есть включение пользовательского ввода на странице (комментарии к статье, например). У атакующего появляется возможность вставить произвольную строку, которая будет рассматриваться как правильный код браузером жертвы.
В примере ниже, простой серверный скрипт используется для вывода последнего комментария на сайте.
<?php
$db = DB::getInstance(); // получаем соединение с базой данных
$lastComment = $db -> getLastComment(); // получаем последний комментарий
print $lastComment;
?>
В данном случае подразумевается, что комментарий состоит только из текста, и что, при его сохранении в базе данных разработчик сайта не фильтрует входные данные, т.е. на сайте – уязвимость. Поэтому атакующий может отправить комментарий с подобным содержанием:
<script> alert(“Ваш сайт взломан”); </script>
И любой пользователь, который посетит эту страницу, будет атакован.
Чем опасен вредоносный Javascript-код? Возможность исполнения JS-кода в браузере жертвы, на первый взгляд, может показаться не такой опасной. В конце концов, сильно сокращенная среда выполнения Javascript, серьёзно ограничивает доступ к файлам пользователя и к операционной системе вцелом. Вы можете открыть консоль вашего браузера и выполнить там любой код – он не причинит вреда вашему компьютеру.
Однако, не все так просто. Вот в таких случаях JS код становится крайне опасным:
- У Javascript есть доступ к части конфиденциальной пользовательской информации (cookie).
- Javascript может отсылать HTTP-запросы с произвольным содержанием на произвольные адреса используя Ajax и другие механизмы.
- С помощью Javascript можно делать произвольные модификации в HTML- коде текущей страницы с помощью DOM.
Эти особенности вместе взятые, создают серьёзные угрозы безопасности.
Последствия вредоносного кода
Среди прочего возможность исполнить произвольный Javascript в браузере открывает для атакующего возможность следующих атак:
- Похищение cookie. Атакующий может получить доступ к cookie жертвы с сайта, используя document.cookie, отправить их на свой сервер и извлечь из них важную информацию, например идентификатор сессии.
- Запись нажатий клавиш. Ставится слушатель (listener) на нажатие клавиш и весь вводимый на странице текст отправляется атакующему.
- Фишинг. Замена легитимных адресов форм, например авторизации, на подконтрольные атакующему адреса.
Несмотря на то, что сами эти атаки отличаются друг от друга существенно, они все имеют общую особенность: внедренный в страницу код исполняется в контексте сайта. Это означает, что вредоносный код рассматривается, как и любой другой скрипт на странице: у него есть доступ ко всем данным жертвы. И этот скрипт может делать все, что может делать любой другой скрипт на странице – в этом и заключается особая опасность XSS.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.