Часто бывает, что веб-приложение вставляет на страницу сайт с которого перешел пользователь. И делает это без фильтрации данных. Основная проблема - современные браузеры преобразуют спецсимволы в их urlencode представления:
' в %27
" в %22
< и > в %3C и %3E соответственно.
Поэтому если сайт тупо вставляет содержимое заголовка Referer не декодируя ссылку, то с этим все сложно.
Ну разве что Internet Explorer, его параметры будут без URLENCODE. Перенаправив с такой страницы на уязвимую - выполнится наш js.
С адекватными браузерами не так гладко, однако Google Chrome не энкодит одинарные кавычки в пути (не в параметре). Поэтому если инъекция в одинарных кавычках атрибута или переменной в js, то эксплуатация не составит труда.
Для этого достаточно создать html страничку с подобным содержимым:
Более того, Internet Explorer - имеет забавную особенность, если перенаправить пользователя с помощью заголовка
Location: "><script>alert()</script>/, то путь также не будет преобразовываться в urlencode.
Может кому-то пригодится в bugbounty
' в %27
" в %22
< и > в %3C и %3E соответственно.
Поэтому если сайт тупо вставляет содержимое заголовка Referer не декодируя ссылку, то с этим все сложно.
Ну разве что Internet Explorer, его параметры будут без URLENCODE. Перенаправив с такой страницы на уязвимую - выполнится наш js.
С адекватными браузерами не так гладко, однако Google Chrome не энкодит одинарные кавычки в пути (не в параметре). Поэтому если инъекция в одинарных кавычках атрибута или переменной в js, то эксплуатация не составит труда.
Для этого достаточно создать html страничку с подобным содержимым:
HTML:
<script>
window.history.replaceState('', '', "/hello'-alert()-'/");
location.href="//vulnerabledomain/"
</script>
Более того, Internet Explorer - имеет забавную особенность, если перенаправить пользователя с помощью заголовка
Location: "><script>alert()</script>/, то путь также не будет преобразовываться в urlencode.
Может кому-то пригодится в bugbounty