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ń