Što je to XSS?
Zlonamjerni korisnici neprekidno eksperimentiraju s mnoštvom zlonamjernih tehnika kojima kompromitiraju web stranice i aplikacije. Koristeći razne tehnike, napadač je često u mogućnosti čitati ili promijeniti osjetljive podatke dostupne web pregledniku, odnosno ukrasti korisničke račune i cookie datoteke, zatim brojeve kreditnih kartica te liječničke kartone. Osim toga, može usmjeriti web preglednik na neke druge adrese ili proslijediti štetan sadržaj iz druge web aplikacije.
XSS (eng. Cross-site scripting) je jedna od najčešće korištenih zlonamjernih napadačkih tehnika.

Općenito, XSS je tehnika zlonamjernih napada kojom napadač u korisničkom web pregledniku izvodi podmetnuti programski kod, što mu omogućuje prikupljanje različitih osjetljivih podataka dostupnih pregledniku.
Danas se web stranice oslanjaju na složene web aplikacije koje pribavljaju različite informacije i prikazuju ih na različite načine korisnicima u ovisnosti o njihovim specifičnim potrebama. To prisiljava razvojne inženjere na stalno usavršavanje web stranica i njihove ponude. Usprkos tome, dinamičke web stranice pate od raznih ranjivosti postajući tako sklone i XSS napadima.
Web stranice sadrže tekst i HTML oznake koje se stvaraju na strani poslužitelja te interpretiraju u pregledniku na klijentskoj strani. Web poslužitelji koji poslužuju samo statičke web stranice imaju potpuni nadzor nad time kako će klijentski preglednik interpretirati te stranice dok poslužitelji koji stvaraju dinamičke web stranice nemaju tu mogućnost. Glavni problem predstavlja zlonamjerni sadržaj koji može biti umetnut na dinamičku stranicu. Naime, ni web stranica ni klijent nemaju dovoljno informacija da prepoznaju da se to dogodilo i poduzmu mjere zaštite.
XSS ranjivosti omogućuju zlonamjernom korisniku umetanje zlonamjernih Java i VBS (eng. Visual Basic Scripting) skripti, ActiveX kontrola, HTML ili Flash sadržaja na ranjivu dinamičku stranicu kako bi zavarali korisnika izvođenjem skripti na njegovom računalu ili njegovoj web stranici, što im omogućuje prikupljanje povjerljivih podataka. XSS napadom mogu se kompromitirati privatne informacije, otuđiti korisnički računi, stvoriti zahtjevi koji mogu biti pogrešno zamijenjeni za zahtjeve korisnika. Također, XSS napadom moguće je pokrenuti i zlonamjerni kod na strani korisnika, tako da se on ili njegovi povjerljivi podaci preusmjere s legitimnog na neki zlonamjerni web poslužitelj. Zlonamjerni podaci obično su sastavni dio neke pažljivo stvorene poveznice u kojoj se nalazi zlonamjerni sadržaj koji je distribuiran na sva moguća mjesta na Internetu.
Da bi napadač korištenjem web preglednika ispitao odgovor dinamičke stranice, on formulira i distribuira vlastiti XSS URL (eng. Uniform Resource Locator) zahtjev. Napadač također mora poznavati HTML (eng. HyperText Markup Language) i JavaScript jezik da bi proizveo URL koji nije previše sumnjivog izgleda te tako napao stranicu osjetljivu na XSS napade.
Svaka web stranica koja prosljeđuje parametre u bazu podataka može biti ranjiva na ovu zlonamjernu tehniku. Uglavnom se to odnosi na prijavne stranice (eng. Login), obrasce za zaboravljene zaporke i slično.
Za Cross Site Scripting napade često se koriste kratice CSS i XSS, što često može dovesti do zamjene s Cascading Style Sheets tehnologijom (CSS).
Je li Vaša web stranica osjetljiva na XSS napade?
Iskustvo nas dovodi do zaključka da je XSS ranjivost jedna od najraširenijih na Internetu. Ona će se pojaviti svuda gdje web aplikacija koristi podatke koje upisuje korisnik i javlja se uslijed neodgovarajuće ocjene ispravnosti ulaznih podataka. Naše vlastito istraživanje pokazuje da je više od trećine web stranica koje njihovi vlasnici prijavljuju za našu besplatnu provjeru ranjivo na XSS napade, a njihov broj i dalje raste.
Primjer XSS napada
Kao jednostavan primjer, zamislite pretraživački mehanizam koji je podložan XSS napadima. Prikaz upita pretraživačkog mehanizma je jedno polje s tipkom čijim pritiskanjem se podaci prosljeđuju aplikaciji. Na dobivenoj stranici prikazuju se odgovarajući rezultati i tekst koji se pretražuje.
Primjer:
Rezultati pretraživanja za pojam „XSS ranjivost“.
Da bi pretraživački mehanizam bio u mogućnosti zabilježiti stranicu (eng. Bookmark) on ostavlja varijable upisane u URL adresi. U tom slučaju URL bi izgledao ovako:
http://test.searchengine.com/search.php?q=XSS%20Ranjivost
Zatim pokušavamo poslati sljedeći upit pretraživačkom mehanizmu:
<script type="text/javascript""> alert('To je XSS ranjivost') </script">
Slanjem kodiranog upita skripti search.php rezultirajući URL bi trebao izgledati ovako:
http://test.searchengine.com/search.php?q=%3Cscript%3
Ealert%28%91This%20is%20an%20XSS%20Vulnerability%92%29%3C%2Fscript%3E
Prilikom učitavanja željene stranice pretraživački mehanizam vjerojatno neće prikazati rezultate pretrage, već će prikazati JavaScript sigurnosno upozorenje koje je umetnuto u stranicu korištenjem XSS ranjivosti.
Kako ispitati web aplikacije na XSS ranjivosti
Za ispitivanje web aplikacija na XSS ranjivosti koristi se skener web ranjivosti. Skener web ranjivosti prolazi kroz cijelu web stranicu i automatski traži XSS ranjivosti. On će pokazati koji su URL-ovi odnosno skripte osjetljivi na XSS napade i tako omogućiti lakše ispravke. Skener web ranjivosti provjerava i ranjivost na SQL injekciju i brojne druge ranjivosti.
Prevencija XSS napada
Da bi se spriječili XSS napadi na web aplikacije obavlja se filtriranje posebnih znakova. Znakovi se filtriraju u svojim ASCII i heksadecimalnim vrijednostima.
|