DOM XSS (anglicky DOM based XSS, někdy také označován jako type-0 XSS) je druh útoku, který se provede na straně uživatele, respektive v jeho prohlížeči. Je důsledkem pozměnění kódu stránky (DOM –Document Object Model).
Samotný obsah se bez problémů přenese k uživateli a teprve tam dojde k samotnému XSS útoku. Díky povaze tohoto útoku se nedá jednoduše detekovat. V podstatě se jedná o bezpečnostní chybu stránky, ale samotný škodlivý kód se na dané stránce už nenachází.
Pěkný příklad DOM XSS je na stránce webappsec.org.
Máme uvítací stránku, která přivítá uživatele:
Uživatel <SCRIPT> var pos=document.URL.indexOf("jmeno=")+5; document.write(document.URL.substring(pos,document.URL.length)); </SCRIPT> se právě přihlásil do systému.
Pokud zavoláme skript http://doména.tld/uvitani.html?jmeno=John Dostaneme výsledek:
Uživatel John se právě přihlásil do systému.
Problém však nastane, když někdo místo John vloží kus javascript kódu. Například:
http://doména.tld/uvitani.html?jmeno=<script>alert(document.cookie)</script>
Poznámka: Tento druh útoku ovšem funguje jen ve starších prohlížečích, protože nové už automaticky znaky < a > překódovávají na %3C a %3E.
Poznámka 2: Dalo mi celkem práci sem tento příklad vložit, WordPress editor mi kód neustále upravoval, tak abych si náhodou nevložil do příspěvku samotný DOM XSS 🙂
Útočník tedy musí uživateli vložit do odkazu škodlivý kód. Toho může dosáhnout například prostřednictvím phising, kde se dá odkaz dobře zamaskovat. Výjimkou však není ani šíření prostřednictvím sociálních sítí, diskuzních fór a dalších míst, kde se koncentruje větší množství lidí. Kvůli zvýšení efektivity, tak může být odkaz s kusem skriptu schován do zkracovače. Také se může jednat o normální odkaz, který povede na stránku, kde bude potenciální oběť přesměrována. Samotné přesměrování už škodlivý kód bude obsahovat.
Ochranou jsou většinou moderní prohlížeče, které upravují kód URL, tím že z něj odstraňují samotný nebezpečný kód (převádí jej na bezpečné znaky). Schválně si zkuste za libovolnou adresu dát například:
?<SCRIPT>
Prohlížeč vám z něj udělá:
?%3CSCRIPT%3E
Poznámka: Mozilla Firefox zobrazuje v URL <SCRIPT> ale ve skutečnosti použije zástupné znaky.
Prohlížeče také umí zasahovat přímo do podezřelého javascript kódu v stránce a upravit jej, aby nebyl nebezpečný. Většina DOM XSS se tak týká starších prohlížečů. I tak je ale nutné prohlížeč pravidelně aktualizovat. DOM XSS stále není minulostí.
Tento článek byl byl přečten 5376 krát