Приветствую, в этой статье хочу детально описать XSS-Уязвимость.
Данная серия мини-статей будет направлена именно на практику.
Но начнем немного с теории: Что такое XSS?
XSS (англ. Cross-Site Scripting - "Межсайтовый скриптинг") - это внедрение вредоносного кода на страницу сайта. Когда вредоносный код выполняется в браузере жертвы, злоумышленник может полностью скомпрометировать пользователя.
Какие бывают типы XSS?
Reflected XSS - вредоносный скрипт исходит из текущего HTTP-запроса.
DOM-Based XSS - уязвимость существует в коде на стороне клиента, а не на стороне сервера
Stored XSS - вредоносный код внедряется в бд/сервер.
Бывают активные и пассивные XSS:
Активный - злоумышленнику нет необходимости подключать к атаке жертву, жертвой становятся все посетители страницы.
Пассивный- переход по ссылки, нажатие не на ту кнопку и т.п. Тут уже нужны навыки социальный инженерии.
В первой части поговорим о Reflected XSS:
Reflected XSS - самая простая XSS-Уязвимость. Данный уязвимость возникает, когда данные, которые передаются в url запросе никак не проверяются. Пример:
Злоумышленник внедряет в url вредоносный код, позволяющий просматривать куки файлы и т.п., и отправляет жертве.
При переходе по ссылке пользователь может ничего и не заметить, но его куки украдут.
Код отправляет куки злоумышленнику, а дальше уже сами понимаете что происходит.
Код:
Код:
https://mywebsite.com/article?id=2.
Код страницы:
Код:
Код:
Статья №2
А что будет, если мы попробуем вставить простейший
Код:
alert()
?
Код:
Код:
https://mywebsite.com/article?id=alert()
Перейдем по такому url и увидим всплывающее окно.
Код страницы после внедрения:
Код:
Код:
Статья: alert()
Попробуем решить лабу на с WebSecurityAcademy.
У нас есть вот такой сайтик
Пробуем вести рандомное значение в поле поиска и можем увидеть уже знакомую картину
Есть какой-то параметр search, в который подставляется значение из строки поиска.
Пробуем вставить простейший пейлоад
Код:
alert()
Получаем вот такую картину. Мы успешно использовали простейшую XSS-Уязвимость, а значит сюда можно вставить и более опасный/вредоносный код, например украсть куки
В данной статье мы разобрали самую простую XSS-Уязвимость. Дальше будет только интереснее и сложнее.
Площадки для практики
PortSwiggerAcademy
Forkbomb
XSS game
P.S. Этого хватит для начала, конечно же площадок помимо этих очень много
Теория
XSS-Payloads
Что такое XSS-Уязвимость
Эффективный поиск XSS
Не используйте полученные знания из данной серии курсов на реальных сайтах ( баг баунти не в счет )