Cross-site scripting (XSS)
Cross-site scripting je vrsta napada kojim napadač stiče mogućnost promjene sadržaja web stranice koju pregleda neki korisnik. Iako ovakva vrsta napada možda zvuči kao nešto što bi nas iritiralo, a ne ugrozilo nasu sigurnost na webu, mnogobrojne opcije koje ovakav napad daje i broj web aplikacija ranjivih na ovu vrstu napada čine ga jednim od najčešćih. Neke statistike iz 2007. godine govore da je oko 80% web aplikacija bilo ranjivo na ovakvu vrstu napada, ovaj broj se narednih godina smanjio ali još uvjek XSS predstavlja jako često izvođen napad.
Napadač za izvođenje napada treba samo ranjivo polje za unos negdje na stranici web aplikacije, ranjivost polja se odražava u tome da tekst koji korisnik unese u njega bude nakon toga ispisan na stranici u istom obliku u kom je unesen i ugrađen u HTML kod stranice koju on pregleda. Ukoliko se u polje unese neki HTML sadržaj, prilikom povratnog ispisa informacije HTML kod stranice će biti izmjenjen,a ta izmjena može da bude bilo šta, od promjene veličine slova kojim je sadržaj ispisan, do umetanja novih komponenti u stranicu (nova polja za unos, liste, slike , itd.).Promjenom sadržaja web stranice napadač može zavarati korisnike te modifikovati informacije koje primaju sa servera ili lažirati nove informacije ako mu je to u interesu, iako ove izmenje ne utiču na tačnost informacija koje se nalaze na serveru, one utiču na korisnikovu interpretaciju njih.
Modifikovanje sadržaja koji mi pregledamo možda ne zvuči kao nešto što bi moglo da naruši nečiju sigurnost, međutim kako se tekst koji unosimo u ranjivo polje odražava u URL-u koji prosljeđujemo, ovaj URL možemo da pošaljemo nekome mailom, da ga postavimo na web stranicu i slično. Napadač će često eksploatisati ovakvu ranjivost neke web aplikacije da dođe do privatnih informacija korisnika bez njihovog znanja.
Jedno od najčešće eksploatisanih polja za unos na web aplikacijama je polje za pretragu, jer često po izvršavanju neke pretrage server uz povratne informacije korisniku daje i tekst koji je on unjeo kao kriterij pretrage. Unošenjem HTML sadržaja u takvo polje moguće je modifikovati izgled stranice ili izvršiti skripte na klijentskoj strani. Klikom na sljedeće linkove možemo vidjeti primjer funkcionisanja XSS napada na ranjivoj web aplikaciji.
Primjer ranjivog polja koje ispisuje uneseni tekst (demo aplikacija) : http://goo.gl/2Mu0Zk
Primjer eksploatacije ranjivog polja za dobijanje korisničke lozinke i imena (demo aplikacija) : http://goo.gl/weyLNt
Klikom na link možemo da vidimo kako napadač koristeći XSS može da zavara korisnika i traži od njega promjenu njegovih korisničkih podataka pod izgovorom da je došlo do sigurnosnog propusta u sistemu i da bi radi svoje bezbjednosti, korisnik bi trebao da promjeni svoje podatke. Nakon unosa podataka u polje i “promjene” korisničkih informacija, napadač bi preusmjerio korisnika na regularnu stranicu i korisnik bi ostao u uvjerenju da je sve uredu, dok bi napadač preuzeo “stare” podatke koje je korisnik mjenjao.
Prilikom pregleda stranice korisnik će moći da vidi relativno dugačak URL u adres baru, međutim pri samom upućivanju na modifikovanu stranicu moguće je skratiti dužinu linka (kao u primjeru).
Postavljanje zaštite od ovakve vrste napada prepušteno je osobama koje razvijaju aplikaciju a malo opreznosti sa korisničke strane nije na odmet.
Izvor:OWASP