Внедрение произвольного javascript-сценария в функционале просмотра изображений мобильной версии сайта
Unknown
Vulnerability Details
Уязвимость существует из-за недостаточной обработки пользовательских данных, полученных из объекта location (url), который используется в функции photo.fullscreen. Функция выполняется при активации события onclick, который срабатывается при клике на фотографию
В настоящее время существует фильтрация пользовательских данных путем экранирования специальных символов, в том числе потенциально-опасного символа одинарной кавычки, однако, фильтрация не затрагивает сам символ слэша, поэтому пользователь может передать в качестве префикса вектора атаки пару `\'`, пройдя через механизм экранирования, пара примет вид `\\'`, следовательно, одинарная кавычка потеряет статус экранирования, что нарушит логику работы функции и позволит выполнить злоумышленнику произвольный js сценарий.
Пример
https://m.vk.com/feed?z=photo-25557243_375319886%2F#abc'123
`photo.fullscreen('/feed?z=photo-25557243_375319886%2Falbum-25557243_00#abc\'123', event);`
https://m.vk.com/feed?z=photo-25557243_375319886%2F#abc\'123
`photo.fullscreen('/feed?z=photo-25557243_375319886%2Falbum-25557243_00#abc\\'123', event)`
Пример вектора атаки с выполнением всплывающего окна
https://m.vk.com/feed?z=photo-25557243_375319886%2F#\')+alert(document.domain)//
Уязвимость усугубляется тем, что данный вид атаки работает во всех современных браузерах и не детектируется в встроенные в браузер механизм защиты (XSS Auditor). Злоумышленник, в результате эксплуатации данной атаки может подменять содержимое сайта, переслать переписку или выполнять произвольные действия от лица пользователя.
Демонстрация эксплуатации на следующем видео:
https://youtu.be/Y9mm3OcESoU
Actions
View on HackerOneReport Stats
- Report ID: 80298
- State: Closed
- Substate: resolved
- Upvotes: 6