XSS tai JavaScript pridėjimas į esamą puslapį siekiant tam tikrų rezultatų. Būna kelių tipų:

  • Išsaugomas - (blogiau) kai pridėtas JavaScript atsiduria puslapio duomenų bazėje ir tada platinamas visiems lankytojams.
  • Neišsaugomas - (dažniau), kai pridėtas JavaScript laikinai atsiduria puslapyje, bet nėra niekur išsaugomas. Dažniausiai tada JavaScript įrašomas į URL tam tikroje vietoje tam, kad po HTTP GET atsidurtų puslapio tekste pvz. per php echo.
  • DOM XSS - kai su XSS atakuojama naršyklė, o ne puslapis. Pvz. JavaScript skriptas įterpiamas į Javascript document.write().

Paprasčiausi atv. keisti

Pirmo tipo keisti

Paprasčiausias atv. tokios atakos (išsaugomo tipo) tai toks. Puslapio komentarai niekaip nefiltruojami nuo 'HTML' kodo, tada įrašomas komentaras:

<script>alert("puslapis nulaužtas!")</script>

Skriptas keliauja į komentarų duomenų bazę ir ten išsaugomas. Po to platinamas visiems lankytojams. Ir visi lankytojai tada mato lentelę "puslapis nulaužtas" vietoj komentaro vėliau. Jei jie prisiregistravę visi jų registracijos duomenys gali būti nukopijuoti su sudėtingesniu skriptu ar pasekti dar kiti dalykai viską riboja tik JavaScript programavimo galimybės.

Antro tipo keisti

Paprasčiausia neišsaugomo tipo ataka galima jei dalis puslapio URL patenka į puslapio turinį. Tarkime nesaugus puslapis turi php skriptą:

<? echo $_GET["name"] ?>

Tada normali HTML formos generuota užklausa atrodytų maždaug taip:

nesaugus.kk/puslapis.php?name="Jonas"

Bet užklausą galima generuoti tiesiog naršyklės adresų juostoje. Ir tada injekuoti skriptą į puslapį galima taip:

nesaugus.kk/puslapis.php?name="<script>alert("puslapis nulaužtas!")</script>"

Skriptas liks neišsaugotas, bet visi kas pasinaudos tokiu URL bus paveikti. Aišku dedami sudėtingesni skriptai tarkim login sesijos perėmimui. Todėl puslapis gali būti nulaužtas nors ir visiškai pateikiant tokią užklausą kaip nuorodą tarkim į kitą forumo temą ir administratoriaus slaptažodį turintis asmuo ja pasinaudos.

Sudėtingesni keisti

Realiai visos formos internete daugiau ar mažiau filtruojamos nuo netinkamos informacijos įvedimo. Visas tokio tipo nulaužimas galiausiai susideda tik iš būdų tuos filtrus apeiti, kurie gali būti ir labai sudėtingi. Rasti būdai ar pažeidžiami formų laukeliai publikuojami kaip web exploit. Čia svarbu ir kūrybingumas ar daugybės variantų išbandymas.

Labai nesaugus puslapis: http://www.dvwa.co.uk/