DOM-based XSS
Tak w ramach ciekawostki – przykładowy URL:
https://wampir.mroczna-zaloga.org/?q=!"#$%25&'()*+,-./:;<=>?@[]^_`{|}~
I teraz rezultat window.location.toString() w różnych przeglądarkach:
Firefox
https://wampir.mroczna-zaloga.org/?q=!%2522#$%25&%2527()*+,-./:;%253C=%253E?@[]^_%2560{|}~
Chrome
https://wampir.mroczna-zaloga.org/?q=!%2522#$%25&'()*+,-./:;<=>?@[]^_`{|}~
Internet Explorer
https://wampir.mroczna-zaloga.org/?q=!"#$%25&'()*+,-./:;<=>?@[]^_`{|}~
Edge
https://wampir.mroczna-zaloga.org/?q=!"#$%25&'()*+,-./:;<=>?@[]^_`{|}~
Sytuacja wygląda jeszcze ciekawiej, gdy zamiast tego użyje się window.location.search (trzeba usunąć znak # bo inaczej większość wchodzi w window.location.hash (do sprawdzenia we własnym zakresie).
O co chodzi? Coś, czego nie można wykorzystać w Chrome czy Firefox jak najbardziej może być exploitowalnym XSS w Edge / IE.
Oryginał tego wpisu dostępny jest pod adresem DOM-based XSS
Autor: Paweł Goleń