XSS атаки с помощью Referer'а



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



' в %27

" в %22

< и > в %3C и %3E соответственно.



Поэтому если сайт тупо вставляет содержимое заголовка Referer не декодируя ссылку, то с этим все сложно.



Ну разве что Internet Explorer, его параметры будут без URLENCODE. Перенаправив с такой страницы на уязвимую - выполнится наш js.



С адекватными браузерами не так гладко, однако Google Chrome не энкодит одинарные кавычки в пути (не в параметре). Поэтому если инъекция в одинарных кавычках атрибута или переменной в js, то эксплуатация не составит труда.



Для этого достаточно создать html страничку с подобным содержимым:





<script>

window.history.replaceState('', '', "/hello'-alert()-'/");

location.href="//vulnerabledomain/"

</script>




#xss #referer