Как создать XSS-уязвимость на своем сайте (пошаговое руководство)
Значит, решил я написать игру, позволяющую обучиться искусству взлома сайтов. Чтобы свой скилл поднять да другим польза была. А по незнанию своему решил одним из первых уровней сделать возможность проведения на сайте XSS-атаки.
Кто не знает, что это, в двух словах объясню. XSS-атака (или межсайтовый скриптинг) - это атака, направленная на выполнение произвольного сценария в браузере жертвы. Обычно, используется для того, чтобы увести куки. А куки нужны для того, чтобы не авторизовываться каждый раз на каком-либо сайте.
Дисклеймер
Автор настоятельно не рекомендует использовать описанные ниже действия, а также не несет никакой ответственности за возможный ущерб
Боюсь, дальнейшее повествование будет интересно никому людям, далеким от веба. Но я все-таки попробую.
Создаем страницу, размещаем на ней форму с текстовым полем.
При отправке формы на сервер обязательно никак не обрабатываем введенные пользователем данные (иначе не будет магии). Нужно сохранить данные в базе данных (а как иначе можно передать другим ссылку на страницу и своровать куку?), а также вывести их на сайт (чтобы скрипт мог запуститься). Проверим, всё ли у нас получилось, введя простейший JavaScript-код:
Ура! Хотя нет, постойте: если использовать одинарные кавычки, в базе данных ничего не сохраняется! А вдруг хакер забудет заэкранировать их? Нельзя этого допустить! Добавим к запросу функцию, экранирующую специальные символы addslashes().
Вот теперь все хорошо сохраняется. Давайте усложним запрос и вставим код, который бы воровал куку пользователя и отправлял к нам на сервер.
Ничего не происходит. Почему это? Давайте откроем консоль (F12 обычно).
Хм, браузер запретил исполнять скрипт и просит указать какие-то заголовки. Еще чего! Я лучше сохраню введенный пользователем текст в базу данных, перезагружу страницу и буду выводить текст не из POST-массива, а из базы данных, тогда браузер ругаться не будет.
Ура, мы это сделали! Еще никогда провести XSS-атаку не было так просто!
Информационная безопасность IT
1.4K поста25.5K подписчиков
Правила сообщества
Обязательно к прочтению для авторов:
1. Если вы добавляете пост, утверждающий об утечке данных или наличии дыр в системе, предоставьте ссылку на источники или технически подкованное расследование. Посты из разряда "Какой-то банк слил данные, потому что мне звонили мошенники" будут выноситься в общую ленту.
2. Все вопросы "Как обезопасить сервер\приложение\устройство" - в лигу "Компьютер это просто".
Обязательно к прочтению для всех:
Добавление ссылки разрешено если она не содержит описание коммерческих (платных) продуктов и/или идентификаторов для отслеживания перехода и для доступа не нужен пароль или оплата в т.ч. интернет-ресурсы, каналы (от 3-х тематических видео), блоги, группы, сообщества, СМИ и т.д.
Запрещены политические holy wars.
По решению модератора или администратора сообщества пользователь будет забанен за:
1. Флуд и оскорбление пользователя, в т.ч. провокация спора, флуда, холивара (высказывание без аргументации о конкретной применимости конкретного решения в конкретной ситуации), требование уже данного ответа, распространение сведений порочащих честь и репутацию, принижающих квалификацию оппонента, переходы на личности.
2. Публикацию поста/комментария не соответствующего тематике сообщества, в том числе обсуждение администраторов и модераторов сообщества, для этого есть специальное сообщество.
3. За обвинение в киберпреступной деятельности.
4. За нарушение прочих Правил Пикабу.