Mēs jau esam minējuši divu veidu XSS izmantošanas veidus: atspoguļots un saglabāts. Tiem visiem ir kopīga iezīme, ka bīstamais kods pēc ievietošanas tiks izpildīts pēc servera atbildes, kas nozīmē, ka kļūda ir servera pusē. serveris. serveris. Ir vēl viens XSS izmantošanas veids, kas ir pretrunā ar šo funkciju. Ļaunprātīgs kods tiek nekavējoties izpildīts klienta pusē, neizejot caur serveri, kas pazīstams kā DOM Based XSS vai pazīstams arī kā 0. tipa XSS.
Vispirms mums ir jāzina, kas ir DOM?
DOM, saīsinājums no Document Object Model, ir standarta W3C forma (http://www.w3.org/DOM/), kas paredzēta, lai izgūtu un apstrādātu strukturētu dokumentu, piemēram, HTML un XML, datus. Šis modelis attēlo dokumentus kā hierarhisku koka struktūru. Visi HTML un XML elementi tiek uzskatīti par mezglu.
DOM balstīta XSS ir XSS izmantošanas tehnika, kuras pamatā ir dokumenta DOM struktūras, īpaši HTML, maiņa.
Tālāk aplūkosim konkrētu piemēru:
Vietnei ir šāds reģistrācijas lapas URL:
example.com/register.php?message=Please fill in the form
Kad mēs tai piekļūstam, mēs redzam ļoti parastu veidlapu:

Veidlapā varat viegli secināt ziņojuma parametru, kas nodots paziņojuma saturam, uzmanīgi apskatiet šī paziņojuma avota kodu:

JavaScript segments ir atbildīgs par vērtības iegūšanu no ziņojuma parametra un tās drukāšanu. Izmantojot šo vieglo ievades pārbaudi, ir pilnīgi iespējams pievilt lietotājus, lai tie piekļūtu bīstamiem URL.
Apraides vietā:
message=Please fill in the form
pēc tam pārsūtiet:
message=GenderMaleFemale
function show(){alert();}
Tad reģistrācijas forma izskatīsies šādi:

Lietotāji neradīs aizdomas par šādu "parastu" formu, un, izvēloties dzimumu, skripts tiks izpildīts:

Es paskaidrošu nedaudz vairāk par ziņojuma parametrā nodoto vērtību:
GenderMaleFemale
function show(){alert();}
Tās galvenais mērķis ir izpildīt funkciju show() katru reizi, kad atlasītajā tagā ir notikums onchage. Funkcija show() šeit vienkārši parādās, lai parādītu, ka skripts ir izpildīts. Tomēr patiesībā hakeri bieži izmanto šo funkciju show(), lai izpildītu skriptu, kas pārsūta lietotāja sīkfailu vērtību uz iepriekš noteiktu serveri Lasītāji var pārskatīt rakstu Reflected XSS , kurā minēts, kā hakeri rada Kā izskatās šis pieprasījums?
Šis piemērs sniedz mums divus svarīgus secinājumus. Pirmkārt, ļaunprātīgais kods tika izpildīts uzreiz pēc noklikšķināšanas uz vērtības atlasītajā tagā, kas nozīmē, ka tas tika izpildīts tieši klienta pusē, neveicot servera atbildi. Otrkārt, HTML struktūra ir mainīta ar nodoto skriptu. Un mēs varam arī redzēt faktisko izmantošanas scenāriju, DOM Based ir nedaudz līdzīgāks Reflected nekā Stored XSS, ja runa ir par lietotāju viltošanu, lai viņi piekļūtu vietrādim URL, kas iegults ar ļaunprātīgu kodu.
Šajā attēlā ir aprakstīts katrs uz DOM balstītas XSS uzbrukuma tehnikas ieviešanas solis:

Tālāk ir redzams video, kurā WhiteHat.vn foruma dalībnieks veic ekspluatāciju, izmantojot DOM balstītu XSS:
Veiksmi!