Již jsme zmínili dva typy XSS exploitů : odražené a uložené.Všechny mají společnou vlastnost, že nebezpečný kód se po vložení provede po odpovědi serveru, což znamená, že chyba je na straně serveru.server.server. Existuje další typ zneužití XSS, který jde proti této funkci, škodlivý kód je spuštěn okamžitě na straně klienta, aniž by prošel serverem, známý jako XSS založený na DOM nebo také známý jako XSS typu 0.
Nejprve musíme vědět, co je DOM?
DOM, zkratka pro Document Object Model, je standardní forma W3C (http://www.w3.org/DOM/) navržená pro získávání a manipulaci s daty strukturovaných dokumentů, jako jsou HTML a XML. Tento model představuje dokumenty jako hierarchickou stromovou strukturu. Všechny prvky v HTML a XML jsou považovány za uzel.
XSS založená na DOM je technika využívání XSS založená na změně struktury DOM dokumentu, konkrétně HTML.
Podívejme se na konkrétní příklad níže:
Webová stránka má následující adresu URL na registrační stránku:
example.com/register.php?message=Please fill in the form
Když k němu přistoupíme, vidíme velmi normální formulář:

Parametr zprávy předaný do obsahu oznámení ve formuláři můžete snadno odvodit, podívejte se pozorně na zdrojový kód tohoto oznámení:

Segment JavaScriptu je zodpovědný za získání hodnoty z parametru zprávy a její tisk. Díky této laxní kontrole vstupu je zcela možné přimět uživatele k přístupu k nebezpečným adresám URL.
Místo castingu:
message=Please fill in the form
pak přenést:
message=GenderMaleFemale
function show(){alert();}
Poté bude registrační formulář vypadat takto:

Uživatelé nebudou mít podezření na „normální“ formu, jako je tato, a při výběru pohlaví se skript spustí:

Vysvětlím trochu více o hodnotě předané v parametru zprávy:
GenderMaleFemale
function show(){alert();}
Jeho hlavním účelem je spustit funkci show() pokaždé, když na tagu select dojde k události onchage.Funkce show() zde jednoduše vyskočí a ukáže, že skript byl proveden. Ve skutečnosti však hackeři často používají tuto funkci show() ke spuštění skriptu, který přenáší hodnotu uživatelského cookie na předem určený server.Čtenáři si mohou přečíst článek Reflected XSS , který zmiňuje, jak hackeři vytvářejí Jak tento požadavek vypadá?
Tento příklad nám dává dva důležité závěry. Za prvé, škodlivý kód byl spuštěn ihned po kliknutí na hodnotu v tagu select, což znamená, že byl spuštěn přímo na straně klienta, aniž by procházel odezvou serveru. Za druhé, struktura HTML byla změněna s předaným skriptem. A můžeme také vidět skutečný scénář zneužití, DOM Based je poněkud podobnější Reflected než Stored XSS, pokud jde o oklamání uživatelů, aby získali přístup k URL s vloženým škodlivým kódem.
Následující obrázek popisuje každý krok při implementaci techniky útoku XSS založené na DOM:

Níže je video člena fóra WhiteHat.vn, který provedl exploit prostřednictvím XSS založený na DOM:
Hodně štěstí!