ࡱ> M Jbjbj== /WWjlPPPd***8bd\dz2.@nL(!!!X\o^o^o^o_oTtTex${ }xP%"%"%"x+;fz+++%"pRP\o+%"\o+$+/h."P8n" m`d*(&k:8n$|z0zl2~* ~8n+ddNaziv projekta:KOM 2003Naru itelj:Elaborat:Sigurnost Web aplikacijaUgovor: Sastavio:Saaa Juai, dipl.ing.Int. broj:Revizija:1.0Datum:2003-10Datoteka:Webappsec.doc  Sadr~aj  TOC \o "1-3" \h \z  HYPERLINK \l "_Toc54679188" 1. Uvod  PAGEREF _Toc54679188 \h 3  HYPERLINK \l "_Toc54679189" 2. Arhitektura  PAGEREF _Toc54679189 \h 4  HYPERLINK \l "_Toc54679190" 3. Ranjivosti Web aplikacija  PAGEREF _Toc54679190 \h 6  HYPERLINK \l "_Toc54679191" 3.1. Nedovoljna provjera ulaznih parametara  PAGEREF _Toc54679191 \h 6  HYPERLINK \l "_Toc54679192" 3.2. Upravljanje sjednicama  PAGEREF _Toc54679192 \h 7  HYPERLINK \l "_Toc54679193" 3.3. Cross Site Scripting  PAGEREF _Toc54679193 \h 8  HYPERLINK \l "_Toc54679194" 3.4. Neispravno koriatenje kriptografskih algoritama  PAGEREF _Toc54679194 \h 9  HYPERLINK \l "_Toc54679195" 3.5. Propusti u konfiguraciji poslu~itelja  PAGEREF _Toc54679195 \h 10  HYPERLINK \l "_Toc54679196" 3.6. Neispravno rukovanje grekama  PAGEREF _Toc54679196 \h 11  HYPERLINK \l "_Toc54679197" 4. Ispitivanje sigurnosti  PAGEREF _Toc54679197 \h 12  HYPERLINK \l "_Toc54679198" 4.1. Analiza izvornog koda aplikacije  PAGEREF _Toc54679198 \h 12  HYPERLINK \l "_Toc54679199" 4.2. Koritenje automatiziranih alata  PAGEREF _Toc54679199 \h 12  HYPERLINK \l "_Toc54679200" 4.3. Manualno ispitivanje  PAGEREF _Toc54679200 \h 13  HYPERLINK \l "_Toc54679201" 5. Zaklju ak  PAGEREF _Toc54679201 \h 15  HYPERLINK \l "_Toc54679202" 6. Literatura  PAGEREF _Toc54679202 \h 16  HYPERLINK \l "_Toc54679203" 7. O autoru  PAGEREF _Toc54679203 \h 17  Sa~etak Sigurnost Web aplikacija podru je je ra unalne sigurnosti kojem se vrlo esto pridaje premalo pozornosti. Sve vea slo~enost i sve aire podru je primjene, svakodnevno unaprjeenje postojeih te razvoj novih tehnologija kao i nedovoljna obu enost Web programera, samo su neki od razloga koji ovo podru je ine sve ozbiljnijim sigurnosnim problemom. Poveani broj incidenata, izravno vezanih uz kompromitiranje Web baziranih sustava, rezultirao je nizom inicijativa u podru ju unaprjeenja sigurnosti Web aplikacija, kako u komercijalnim tako i u znanstveno-istra~iva kim krugovima. U ovome dokumentu opisana je osnovna struktura Web aplikacija, tipi ni sigurnosni problemi koji se javljaju u ovom podru ju, kao i na ini ispitivanja njihove sigurnosti. Abstract Web Application Security is a special security area which receives relatively little attention compared with other aspects of network and computer security. However, its importance is increasing due to the increasing number of incidents closely related to Web application compromise, as a result of the rapid development of more complex and more varied Web technologies. This paper describes basic structure of Web applications, main security issues and vulnerabilities in this area, as well as related security assessment methods and tools. Uvod Pod Web aplikacijama smatra se sva ona programska podraka koja ja namijenjena i prilagoena izvraavanju na Web poslu~iteljima, pri emu se komunikacija s klijentom, naj eae Web preglednikom, odvija putem HTTP, odnosno HTTPS protokola. Funkcije koje Web aplikacije danas obavljaju vrlo su raznolike i znatno slo~enije u odnosu na prije nekoliko godina. Od jednostavnih pretra~ivanja lokalnih baza podataka, do razli itih vrsta Web portala, foruma i Webmail okru~enja, pa sve do kompleksnih sustava za elektroni ko poslovanje i udaljeno upravljanje sustavima, sve su funkcionalnosti koje su danas dostupne putem Web servisa. Tehnologije koje stoje iza Web aplikacija takoer su zamjetno napredovale. Kako je rasla potreba za slo~enijim i dinami nijim sustavima, tako su se javljale i nove tehnologije koje su programerima omoguavale jednostavniji i br~i razvoj aplikacija. Do prije nekoliko godina Web aplikacije su se razvijale u obliku "jednostavnih" CGI (engl. Common Gateway Interface) skripti, koje su se redovito izvraavale na istom poslu~itelju na kojem su se nalazile i ostale komponente sustava (baza podataka, Web poslu~itelj). Danaanje Web aplikacije naj eae su distribuirane na nekoliko razli itih poslu~itelja, i razvijane su znatno monijim i naprednijim alatima specijalno prilagoenim u ovu svrhu. Ukoliko se dodatno u obzir uzme kompleksnost danaanjih Web aplikacija te poveani broj incidenata na Internetu, jasno je da su se i u ovom podru ju po eli javljati novi sigurnosni problemi i izazovi. Osim toga, HTTP protokol sam po sebi posjeduje odreene nedostatke koji Web programerima ote~avaju posao. Ovdje se prvenstveno misli na bezkonekcijsku (engl. Stateless) prirodu HTTP protokola koja unosi probleme uspostave, odr~avanja i raskidanja sjednica izmeu klijenta poslu~itelja, a prisutni su i mnogi drugi problemi. Arhitektura Kako bi se uope moglo raspravljati o sigurnosti Web aplikacija, potrebno je precizno utvrditi granice sustava i njegove komponente, kako bi se na taj na in mogle identificirati sigurnosne prijetnje, ranjivosti, a potom i rizici. Osim komponenti same Web aplikacije, u obzir je potrebno uzeti i sve ostale faktore, koji mo~da nisu u izravnoj vezi sa samom aplikacijom, a ipak imaju utjecaj na cjelokupnu sigurnost sustava. Struktura Web aplikacija najbolje se mo~e prikazati slojevitim prikazom, u kojem svaki sloj predstavlja odreenu funkciju. Na sljedeoj slici ( REF _Ref54416098 \h  \* MERGEFORMAT Slika 1), dan je logi ki prikaz strukture jedne tipi ne Web aplikacije. Slika  SEQ Slika \* ARABIC 1: Logi ki prikaz strukture Web aplikacije Struktura prikazana na slici sastoji se od tri sloja: Prezentacijski; Aplikacijski; Podatkovni. Prezentacijski sloj (engl. Presentation Layer) zadu~en je za prikaz podataka krajnjem korisniku ili nekom drugom sustavu, odnosno aplikaciji. Web poslu~itelj podatke prosljeuje Web pregledniku koji je zadu~en za njihov prikaz na zaslonu ra unala. Osim prikaza podataka korisniku se omoguuje interakcija sa Web aplikacijom, naj eae putem Web formi, iako su mogua i druga rjeaenja Prezentacijski sloj sastoji se tipi no od Web preglednika na strani klijenta i udaljenog Web poslu~itelja na strani aplikacije. Komunikacija izmeu Web klijenta i Web poslu~itelja odvija se putem protokola kao ato su HTTP, HTTPS, SOAP, a mogue su i druge realizacije. Aplikacijski sloj (engl. Application Layer) predstavlja jezgru Web aplikacije. U njemu je sadr~ana gotovo cijela inteligencija aplikacije i ovdje se obavljaju sve zadae kao ato su procesiranje korisni kog ulaza, donoaenje odluka, dohvaanje drugih podataka te njihovo prosljeivanje prezentacijskom sloju, odnosnu krajnjem korisniku. Kao primjer tehnologija koje se koriste na prezentacijskom sloju mo~e se navesti CGI, PHP, J2EE, Apache Tomcat i sl. Podatkovni sloj (engl. Data Layer) predstavlja repozitorij podataka koje aplikacija koristi u svome radu. Kao konkretni primjer u ovom se slu aju mo~e spomenuti baza podataka, iako postoje i druga rjeaenja. Moderne Web aplikacije danas podatke naj eae pohranjuju u XML formatu kako bi se na taj na in postigla portabilnost izmeu razli itih sustava. Istu ovu strukturu mogue je prikazati i na druga iji na in, u obliku mre~nog dijagrama ( REF _Ref54434463 \h Slika 2). Na ovoj slici jasno je mogue uo iti koje komponente sustava pripadaju kojem sloju prema logi koj strukturi danoj na prethodnoj slici ( REF _Ref54416098 \h Slika 1). Slika  SEQ Slika \* ARABIC 2: Mre~na struktura Web aplikacije Sigurnost Web aplikacija treba promatrati kroz sve ove slojeve, budui da svi oni utje u na sigurnost sustava. Najmanji sigurnosni propust unutar bilo koje od opisanih komponenti dovoljan je da ugrozi cijeli sustav. Ranjivosti Web aplikacija Ranjivosti Web aplikacija grubo se mogu podijeliti u dvije skupine: logi ke i tehni ke. Pod tehni kim ranjivostima smatraju se oni sigurnosti propusti koji su posljedica tehni kih pogreaaka u programskom kodu, dok su logi ke pogreake vezane uz sam na in rada aplikacije. U nastavku poglavlja biti e opisano nekoliko tipi nih kategorija sigurnosnih propusta vezanih uz Web aplikacije, zajedno s konkretnim primjerima ranjivosti za svaku pojedinu kategoriju. S obzirom da bi detaljna analiza svake od ranjivosti zahtijevala mnogo vie vremena i prostora, ovdje su samo izneseni osnovni sigurnosni problemi te primjeri ranjivosti za svaku od kategorija. Nedovoljna provjera ulaznih parametara Nedovoljna provjera korisni kih parametara slobodno se mo~e navesti kao jedan od naj eaih i najozbiljnijih sigurnosnih propusta kada je rije  o Web aplikacijama. Bez adekvatne provjere parametara, aplikacija se ostavlja otvorenom na velik broj razli itih napada koji mogu ugroziti sigurnost sustava. Postoji nekoliko razli itih metoda putem kojih je mogua razmjena podataka izmeu klijenta i Web aplikacije; putem Web formi, URL adresa, HTTP zaglavlja, Web kola ia i sl. Bez obzira o kojoj se od navedenih metoda radi, podaci se poslu~itelju, a nakon toga i aplikaciji, prosljeuju putem HTTP, odnosno HTTPS zahtjeva. Sigurnosni problemi koji se javljaju u ovom smislu prisutni su prvenstveno zbog injenice da je la~iranje, odnosno modifikacija parametara HTTP/HTTPS paketa iznimno jednostavna. Koriatenjem specijalno razvijenih programa sa ugraenom proxy funkcionalnoau, mogue je vrlo jednostavno formirati proizvoljne HTTP/HTTPS zahtjeve te ih proslijediti poslu~itelju (sli ne akcije mogue je provesti i jednostavnim programima kao ato su netcat ili telnet). Ukoliko provjera parametara na strani aplikacije nije kvalitetno osmialjena i implementirana, neovlaateni korisnik mo~e jednostavno zaobii definirane sigurnosne mjere te ostvariti neautorizirani pristup sustavu. Upravo je stoga iznimno va~no da se svi podaci primljeni od strane klijenta, prije upotrebe provjere i saniraju od nepredvienih znakova. Ovo je jedno od osnovnih pravila sigurnosti Web aplikacija i njegovim pridr~avanjem mogue je ukloniti veinu ranjivosti. Neki od problema koji se javljaju kao posljedica nedovoljnih provjera korisni kih podataka su: Napadi umetanjem SQL naredbi (engl. SQL Injection); Neovlaateno izvraavanje naredbi na udaljenom sustavu (engl. Command injection vulnerabilities); Cross Site Scripting (XSS), Poglavlje  REF _Ref54418142 \r \h  \* MERGEFORMAT 3.3; Napadi prepisivanjem spremnika (engl. Buffer overflow); Manipulacija HTTP/HTTPS zaglavlja; Preskakanje direktorija (engl. Directory traversal); Napadi kodiranjem zahtjeva (Unicode, hex, ). Veina navedenih problema spada u skupinu ranjivosti visokog sigurnosnog rizika, ato dodatno naglaaava potrebu za strogim provjerama nad primljenim podacima prije njihove upotrebe. Upravljanje sjednicama Upravljanje sjednicama (engl. Session manegement), jedan je od tipi nih problema koji je ve du~i niz godina prisutan kod razli itih tipova Web aplikacija. Korijeni problema proizlaze iz injenice da je HTTP protokol sam po sebi bezkonekcijski, i da kao takav ne omoguuje praenje stanja pojedinih sjednica. Iz tog razloga upravljanje sjednicama potrebno je implementirati na aplikacijskom nivou, za ato se pokazalo da nije nimalo trivijalan zadatak. Problematiku upravljanja sjednicama Web programeri naj eae rjeaavaju koriatenjem identifikatora sesija (engl. Session ID), koji se ujedno koriste i za autentikaciju korisnika. Ovakav pristup, iako prili no funkcionalan i prakti an za implementaciju, za sobom povla i brojne sigurnosne probleme. Nakon uspjeane autentikacije korisnika, istome se izdaje odgovarajui identifikator sesije, koji klijent u svim sljedeim zahtjevima koristi za dokazivanje svojeg identiteta, Identifikatori sesija se izmeu klijenta i poslu~itelja razmjenjuju ili putem URL adrese (GET metoda), putem kola ia (engl. Cookie) ili putem skrivenih Web formi (POST metoda). Iako svaka od navedenih metoda ima svoje prednosti i nedostatke, sigurnosni rizik prisutan je kod svake od njih. Koncept Web kola ia, osmialjen je od strane tvrtke Netscape i danas se smatra de facto standardom kada se govori o razmjeni identifikatora sesija izmeu Web preglednika i poslu~itelja. Budui da se generirani identifikator koristi i u svrhu autentikacije korisnika, na in njegovog generiranja iznimno je va~an za sigurnost aplikacije. Veli ina identifikatora te njegova pseudo-slu ajna komponenta, koja ga ini teakim za predikciju, osnovni su elementi o kojima je potrebno voditi ra una prilikom njegovog generiranja. U suprotnom, sustav se ostavlja otvorenim za provoenje brojnih napada kao ato su: Brute-force napadi; Otimanje sjednica (engl. Session hijacking); Ponavljanje sjednica (engl. Session replay); La~iranje sjednica (engl. Session forging); Svi ovi napadi neovlaatenim korisnicima omoguuju preuzimanje identiteta legitimnim korisnicima, a samim time i neautorizirani pristup sustavu. Cross Site Scripting Iako su Cross Site Scripting (XSS) ranjivosti ve spomenute kao jedna od moguih posljedica nedovoljne provjere korisni kih podataka (Poglavlje  REF _Ref54418565 \r \h 3.1), njihova specifi nost i raairenost te uska povezanost uz Web aplikacije, zaslu~uje da im se pridijeli zasebna kategorija. Aplikacije ranjive na XSS napade neovlaatenim korisnicima omoguuju prosljeivanje i izvraavanje malicioznog koda na strani legitimnih klijenata koji pristupaju ranjivim Web sadr~ajima. Specifi no je to da se maliciozni kod u ovom slu aju izvraava na strani klijenta (unutar Web preglednika), a ne na strani Web poslu~itelja kao ato je to ina e slu aj. Ukoliko je sam napad pa~ljivo i dobro osmialjen, posljedice po krajnjeg korisnika mogu biti vrlo ozbiljne, bez da je on toga svjestan. Osnovni koncept koji se skriva iza XSS napada je taj da napada  iskoristi ranjivu aplikaciju u svrhu prosljeivanja malicioznog koda krajnjem korisniku (naj eae se radi o JavaScript kodu, iako to nije pravilo). U osnovi postoje dva na ina na koja je to mogue postii. Prvi je da se maliciozni kod trajno pohrani na ranjivom poslu~itelju, npr. u obliku pitanja ili odgovora na Web forumu, ili u obliku Web e-mail poruke ukoliko se o Webmail okru~enju, ili na bilo koji drugi na in koji napada u omoguuje trajno pohranjivanje sadr~aja na poslu~itelju. Drugi na in je da se korisniku proslijedi maliciozna URL adresa, koja u sebi sadr~i maliciozni kod koji e se izvraiti nakon posjeta stranici. Budui da se iz perspektive klijenta, maliciozni kod izvraava u kontekstu legitimne Web stranice, njegove ovlasti na klijentskom ra unalu su prili no visoke. XSS ranjivosti neovlaateni korisnici naj eae provode s ciljem krae Web kola ia (koji u sebi sadr~e identifikator sjednice), kako bi na taj na in preuzeli identitet korisnika te ostvarili neautorizirani pristup sustavu. Naravno mogui su i brojni drugi scenariji kao ato je dolazak do povjerljivih korisni kih podataka, praenje i prikupljanje podataka o aktivnostima korisnika, instalacija Trojanskih konja i sl. Teoretski, mogue je provesti sve napade koji su u okviru mogunosti skriptnih jezika podr~anih od klijentskog Web preglednika. Opisani problemi posljedica su prvenstveno nedovoljnih provjera nad podacima koje aplikacija prima od srane korisnika, kao i podataka koji se ispisuju na samu stranicu. Mogunost prosljeivanja proizvoljnih podataka aplikaciji, koji se bez adekvatnih provjera ispisuju na stranici, propust je koji gotovo uvijek za sobom povla i Cross Site Scripting ranjivosti. Danas je poznat iznimno velik broj Web portala, Webmail okru~enja, modula za pretra~ivanje (search funkcionalnost), koji su ranjivi na XSS napad, ato dovoljno ukazuje na ozbiljnost problema. Neispravno koriatenje kriptografskih algoritama Budui da velik broj modernih Web aplikacija barata sa povjerljivim podacima, potrebno je na odreeni na in osigurati njihovu zaatitu od neovlaatenog pristupa. U tu svrhu naj eae se koriste razli iti kriptografski algoritmi, bilo da se radi o podacima u prijenosu, podacima pohranjenim u bazi podataka, ili podacima koji se nalaze na lokalnom datote nom sustavu. Iako je upotreba kriptografskih alata i modula danas mnogo jednostavnija i prakti nija u odnosu na prije nekoliko godina, joa uvijek su prisutni brojni sigurnosni propusti koji su posljedica neispravnog koriatenja i nepoznavanja osnovnih na ela kriptografije. Pogreano je mialjenje da je sustav siguran ukoliko se koristi enkripcija podataka. Nekoliko osnovnih pogreaaka koje su naj eai uzroci problema u ovom smislu su: Nesigurno pohranjivanje klju eva, certifikata i zaporki; Nesigurno pohranjivanje kriptografskih podataka u memoriji ra unala; Primitivni pseudo-slu ajni generatori; Neprikladan odabir algoritma; Neprikladna veli ina klju a; Koriatenje novih, neprovjerenih kriptografskih algoritama. Neprikladno koriatenje kriptografije posebno je opasno iz nekoliko razloga. Osim ato odaje la~an osjeaj sigurnosti, u opasnost se stavljaju osjetljivi podaci koji nisu predvieni za javnu objavu. Kriptografija se naj eae primjenjuje na one podatke koji imaju poseban zna aj za organizaciju, i ije se otkrivanje ~eli izbjei pod svaku cijenu. I najmanje pogreake u ovom smislu mogu imati katastrofalne posljedice s iznimno velikim gubitcima. Propusti u konfiguraciji poslu~itelja Kada se govori o sigurnosti Web aplikacija, nikako se ne smije zaboraviti na konfiguraciju samih poslu~itelja koji ine sustav. Osim Web poslu~itelja, pritom se misli i na aplikacijske poslu~itelje, odnosno poslu~itelje baza podataka, ovisno o arhitekturi i namjeni sustava. Navedeni poslu~itelji zadu~eni su za procesiranje, generiranje i pohranjivanje sadr~aja te kao takvi igraju vrlo va~no ulogu u pogledu sigurnosti Web aplikacija. Kompromitiranje bilo kojeg od njih izravno ugro~ava sigurnost cijelog sustava zbog ega je vrlo bitno njihovo redovito i temeljito odr~avanje. Problem je dodatno naglaaen s obzirom na injenicu da Web programeri vrlo esto nisu u izravnoj vezi sa sistem administratorima koji odr~avaju sustave na kojima se aplikacija pokree. Ovakav pristup vrlo esto rezultira neprilagoenim konfiguracijama, koje nisu u skladu sa zahtjevima aplikacije, ime se u sustave nepotrebno unosi dodatni sigurnosni rizik. U nastavku su navedeni neki tipi ni problemi koji se javljaju u ovom kontekstu: Nepravovremena instalacija sigurnosnih zakrpi; Neispravna konfiguracija poslu~itelja (ovlasti pristupa, mogunost izvraavanja skripti, dozvoljeno pisanje i pregledavanje direktorija itd& ); Nepotrebno ostavljene inicijalne datoteke (npr. test-cgi, printenv skripte), backup datoteke, konfiguracijske datoteke, probne datoteke i sl.; Nepromijenjene inicijalne zaporke; Neispravno podeaena SSL podraka. Veinu ovih problema mogue je vrlo jednostavno identificirati pokretanjem automatiziranih alata za provjeru ranjivosti (engl. Vulneracility scanning tools) kao ato su ISS Scanner, Nessus, Retina i dr. Neispravno rukovanje greakama Neispravno rukovanje greakama (engl. error handling), iako se na prvi pogled ini posve bezazlenim problemom, igra vrlo va~nu ulogu u podru ju sigurnosti Web aplikacija. Greake koje aplikacije javljaju tijekom izvraavanja programskog koda vrlo esto sadr~e detaljne podatke o arhitekturi i konfiguraciji sustava te ih je iz toga razloga potrebno adekvatno obraditi, kako ne bi bile dostupne onim korisnicima koji predstavljaju potencijalnu prijetnju za sustav. Podaci o neispravnom rukovanju memorijom, neuspjelom izvravanju SQL upita, sistemskih poziva i naredbi, ispisi tragova izvravanja programskog koda, sve su informacije koje iskusnim neovlaatenim korisnicima olakaavaju planiranje i provoenje malicioznih aktivnosti. Potreba za kvalitetno rijeaenim sustavom rukovanja greakama, jedan je od va~nijih kriterija koji se predstavlja pred Web aplikacije u pogledu njihove sigurnosti. Koli inu informacija koje se korisniku prikazuju potrebno je svesti na minimum, a tamo gdje je to mogue potrebno ih je u potpunosti ukloniti. Sustav rukovanja greakama potrebno je osmisliti tako da se koli ina i tip informacija prilagodi onome za koga je greaka namijenjena. Krajnjem korisniku potrebno je vratiti smislenu greaku koje e ga obavijestiti o uzroku problema, Web administratorima potrebno je osigurati dijagnosti ke informacije koje olakaavaju odr~avanje sustava, dok je potencijalnim napada ima preporu ljivo uskratiti ato je mogue viae informacija. Ovo pravilo iako jednostavno zvu i, nije nimalo jednostavno za implementaciju i od programera zahtjeva mnogo znanja i iskustva. Propuste ovog tipa mogue je uo iti ili udaljenim provoenjem specijaliziranih testova ili detaljnom analizom izvornog koda aplikacije. Ispitivanje sigurnosti Ispitivanje sigurnosti Web aplikacija vrlo je zahtjevan i dugotrajan proces. Osim poznavanja razli itih tehnologija kao ato su PHP, ASP, JSP i sl. potrebna su i brojna druga znanja i vjeatine vezane uz ovo podru je. Postoji nekoliko osnovnih pristupa kod testiranja Web aplikacija. To su: Analiza izvornog koda aplikacije; Koriatenje automatiziranih alata; Manualno ispitivanje. Iako svaki od navedenih pristupa ima svoje prednosti i nedostatke, iskustva su pokazala da najbolje rezultate daje njihovo meusobno kombiniranje. U nastavku e biti ukratko opisan svaki od navedenih pristupa s pripadajuim prednostima i nedostatcima. Analiza izvornog koda aplikacije Detaljno pregledavanje izvornog koda aplikacije, tzv. whitebox pristup, vremenski je vrlo zahtjevan i zahtjeva zavidno poznavanje tehnologije u kojoj je aplikacija razvijena. Dodatni poteakoe javljaju se u slu aju kompleksnih sustava s velikim brojem funkcionalnosti, budui da je u tom slu aju potrebna iznimna koncentracija i strpljivost te detaljno upoznavanje s kodom i vezama izmeu pojedinih modula. Iako ovaj pristup daje vrlo dobre i detaljne rezultate, neato je rjei u praksi, s obzirom na cijenu usluge. Budui da se radi o vrlo detaljnom i dugotrajnom procesu, ovakav tip usluge znatno je skuplji od ostalih, ato je osnovni razlog njegove rjee primjene. Koriatenje automatiziranih alata Danas je dostupan vrlo velik broj razli itih programskih alata, ato besplatnih, ato komercijalnih, koji omoguuju ispitivanje sigurnosti Web aplikacija. Veina njih bazira se na ugraenoj proxy funkcionalnosti koja omoguuje presretanje, analizu i modifikaciju HTTP, odnosno HTTPS sjednica, a sve eae su prisutne i druge napredne mogunosti koje omoguuju automatiziranu detekciju razli itih ranjivosti kao ato su Cross Site Scripting (XSS), SQL Injection ranjivosti i sl. Iako koriatenje ovakvih alata u odreenoj mjeri automatizira i olakaava postupak ispitivanja, joa uvijek je potrebna prili no visoka razina znanja provoditelja testiranja. Pogreano je mialjene da koriatenje ovakvih automatiziranih programskih rjeaenja isklju uje potrebu za poznavanjem problematike sigurnosti Web aplikacija. Treba razumjeti da su ovakvi programski paketi samo alati koji stru njacima olakaavaju i automatiziraju provoenje ispitivanja. Neki od alata koji omoguuju ispitivanje sigurnosti Web aplikacija su: Exodus; Paros; WebInspect; Sanctum. Manualno ispitivanje Za razliku od pristupa opisanog u prethodnom poglavlju (Poglavlje  REF _Ref54419996 \r \h 4.1), u ovom slu aju provoditelju ispitivanja nije dostupan kod aplikacije (engl. blackbox pristup), ve se sva ispitivanja provode udaljeno. Sustav koji se ispituje, tretira se jednako kao ato to ine neovlaateni korisnici prilikom provoenja malicioznih aktivnosti, ime se simuliraju aktivnosti i dogaaji svakodnevno prisutni na Internetu. Koriatenjem razli itih tehnika i alata, aplikacija se podvrgava detaljnim testovima kojima je cilj ustanoviti potencijalne ranjivosti i nedostatke. Ovisno o razini stru nosti provoditelja testiranja, ovakva ispitivanja daju vrlo dobre rezultate, koji jasno ukazuju na potencijalne sigurnosne probleme. Treba napomenuti da je za razliku od ranije spomenutog whitebox pristupa, ovakvim ispitivanjem gotovo nemogue uo iti logi ke ranjivosti koje su posljedica pogreaaka u algoritmu aplikacije, a vrlo teako je uo iti i slo~enije tehni ke ranjivosti koje su posljedica greaaka u programskom kodu aplikacije (npr. buffer overflow, format string ranjivosti). Udaljenim ispitivanjem naj eae se otkrivaju propusti vezani uz autentikaciju i autorizaciju korisnika, upravljanje sjednicama, Cross Site Scripting ranjivosti, mogunost izvraavanja proizvoljnih naredbi na sustavu i sl. Iskustva su pokazala da nabolje i najpotpunije rezultate daju ispitivanja koja se sastoje od sva tri pristupa. Slijed dogaaja koji je u tom slu aju logi an i kojim se posti~u najbolji rezultati je: Automatizirano pregledavanje udaljenog sustava (Scan)  faza u kojoj se pokreu automatizirani alati kojima se obavlja identifikacija sustava te detekcija osnovnih tehni kih ranjivosti; Manualne provjere (Verify)  faza u kojoj se analiziraju rezultati prikupljeni u fazi jedan, nakon ega se pristupa manualnom testiranju kojemu je cilj identificirati slo~enije tehni ke i logi ke ranjivosti koje nije mogue prepoznati bez dodatne intervencije stru njaka s odreenim znanjima i iskustvima u ovom podru ju. Ova faza iziskuje najviae znanja i vjeatina i vremenski je najzahtjevnija. Periodi ko ispitivanje sigurnosti (Assess)  ova faza posebno je va~na za kontinuirano odr~avanje jednom postignutog sigurnosnog nivoa. Periodi ka testiranja provode se s ciljem identifikacije onih sigurnosnih propusta koji su posljedica promjena u sustavu. Svaka promjena za sobom povla i odreeni sigurnosni rizik koji je potrebno pravovremeno identificirati te na njega prikladno reagirati. Budui da su promjene vrlo este i gotovo neizbje~ne, periodi ko ispitivanje sigurnosti va~na je karika u postupku unaprjeenja sigurnosti. Zaklju ak U ovom dokumentu opisana je problematika sigurnosti Web aplikacija, podru je ra unalne sigurnosti koje se bavi analizom i ispitivanjem sigurnosti Web baziranih aplikacija, kao i razvojem novih tehnika i alata koji omoguuju unaprjeivanje njihove sigurnosti. Opisani su osnovni koncepti aplikacija baziranih na Web servisu, navedene su tipi ne kategorije ranjivosti koje su prisutne u ovom podru ju, kao i osnovne metode za ispitivanje njihove sigurnosti. Literatura OWASP Guide to Building Secure Web Applications,  HYPERLINK "http://www.owasp.org" http://www.owasp.org. OWASP Top Ten Web Application Vulnerabilities,  HYPERLINK "http://www.owasp.org" http://www.owasp.org Microsoft; Improving Web Application Security,  HYPERLINK "http://www.cgisecurity.com/lib/Threats_Countermeasures.pdf" http://www.cgisecurity.com/lib/Threats_Countermeasures.pdf Cross Site Scripting Questions and Answers,  HYPERLINK "http://www.cgisecurity.com/articles/xss-faq.shtml" http://www.cgisecurity.com/articles/xss-faq.shtml O autoru Juai Saaa, dipl.ing., zaposlen na Fakultetu Elektrotehnike i Ra unarstva (Zavod za Elektroni ke Sustave i Obradbu Informacija, ZESOI) u Zagrebu. Kao lan grupe "Labratorij za Sustave i Signale" aktivno je sudjelovao na brojnim projektima vezanim uz unaprjeenje i ispitivanje sigurnosti ra unalnih sustava, kao i na projektima vezanim uz praenje i analizu postupaka neovlaatenih korisnika. Juai Saaa, dipl.ing., FER, ZESOI Laboratorij za sustave i signale, LSS Unska 3, 10000 Zagreb Tel: 01/6129-956 Fax: 01/6129-652 E-mail: Sasa.Jusic@LSS.hr WWW:  HYPERLINK "http://www.lss.hr" http://www.lss.hr Naziv datoteke:  FILENAME \* MERGEFORMAT Webappsec.docList page 17 od 14 Naziv datoteke:  FILENAME \* MERGEFORMAT Webappsec.docList page 1 od 14  24LPd$2DXxz !Žřwiwj{UmHnHujUmHnHumHnHu5OJQJaJmHnHu0JaJmHnHu&j>*B*UmHnHphu mHnHu0JmHnHuj0JUmHnHu jU 5CJ\5CJOJQJ CJOJQJB*CJOJQJph5CJOJQJ) 24LNPd8l,$"$If]"^`a$m$$Ifl4      h0H (0      4 la$$If^`a$ FI$2BD[x[h$$Ifl4      h\{H  0      4 la$$If^`a$ DXtvxz%tljjjjccc X m$$Ifl4      h0H (0      4 la$!$If]!^`a$$$If^`a$ !"#$%&'BCDEGHSTUnopqrstuvɯߥѥɃߥѥujgUmHnHu&j>*B*UmHnHphujqUmHnHu0JaJmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu5OJQJaJmHnHuj0JUmHnHujUmHnHumHnHu,789:;<=>?Z[\]abxyz׿ן׋׿}ןi&j>*B*UmHnHphujSUmHnHu&j>*B*UmHnHphu mHnHuj]UmHnHujUmHnHumHnHu5CJOJQJaJmHnHu0JmHnHuj0JUmHnHu&j>*B*UmHnHphu)= 8 a V ( @$Z$' ^` X    "$&.0     d f h ѹѹѹ}ѹoj5UmHnHu&j>*B*UmHnHphuj?UmHnHu&j>*B*UmHnHphu mHnHu0JmHnHu5CJOJQJaJmHnHuj0JUmHnHujIUmHnHujUmHnHumHnHu+    1 2 3 5 6 7 8 9 : U V W X Z [ q r s ۹ۋsesj! UmHnHu5OJQJaJmHnHu0JaJmHnHu&j>*B*UmHnHphuj+UmHnHujUmHnHumHnHu&j>*B*UmHnHphu mHnHu0JmHnHu5CJOJQJaJmHnHuj0JUmHnHu'       ? @ A Z [ \ ^ _ ` a b c ~  |h&j >*B*UmHnHphuj UmHnHu&j >*B*UmHnHphuj UmHnHujUmHnHumHnHu5CJOJQJaJmHnHuj0JUmHnHu&j >*B*UmHnHphu mHnHu0JmHnHu(    H J L P R T V X Z ӹ󕇕ye&jt >*B*UmHnHphuj UmHnHu5OJQJaJmHnHu0JaJmHnHu&j~ >*B*UmHnHphu mHnHuj UmHnHujUmHnHumHnHu5CJOJQJaJmHnHu0JmHnHuj0JUmHnHu' . 0 2 4 8 : J L N j"#((((ƸưƸzvvnj`U6]mH sH 5CJ jUjUmHnHu&jj>*B*UmHnHphu mHnHu0JmHnHu5OJQJaJmHnHuj0JUmHnHuj UmHnHujUmHnHumHnHu0JaJmHnHu+())$)&))))))))8** +0+T+040D0f03333 7 76787:7F7H7J7^8`88888888888888$9;;;;FF4H@HJHVHM0MMM!N"N:N;NKNLNONPNxNNNNQQjU OJQJ^J 56\]jVUjU6] 5>*\5\ mHnHu jUL'):*****03X68&9: ;*=?9?ZBD^HLL6MMRNNNN & F##$a$NOlQQ"UrW\__P``a&bRbdzh&ofswxz}>~~:t & F#QVVYY[[__(`J`````bbbrctccccccu vvv .DPNjbrج8:jlntv$ >d.h12TUVjkj U0JjBU5\jU OJQJ^JjLU jU6]Ot8`ˆ0ȎP v_Ԗ6ƞL$ & F#`$.p&BR`x |<>T\n$ & F#a$ & F & F#PQR`b|%)6:GNaefg*+2389:;AԶԶ0JOJQJmHnHu 0JOJQJj0JOJQJUOJQJmHnHujOJQJUOJQJjvU6\5j9UjU0J jU@fh|%6Ga $$Ifa$$If^` ^`$a$$ & F#a$,-Bzxjaa $$Ifa$$If^`$a$$$Ifl4F ,0    4 laBCDEFGHIJ|zxxxxn ^`$a$~$$Ifl4FY{0    4 laADJOJQJ- 0 00 &P"P& _7!"#$n%{DyK  _Toc54679188{DyK  _Toc54679188{DyK  _Toc54679189{DyK  _Toc54679189{DyK  _Toc54679190{DyK  _Toc54679190{DyK  _Toc54679191{DyK  _Toc54679191{DyK  _Toc54679192{DyK  _Toc54679192{DyK  _Toc54679193{DyK  _Toc54679193{DyK  _Toc54679194{DyK  _Toc54679194{DyK  _Toc54679195{DyK  _Toc54679195{DyK  _Toc54679196{DyK  _Toc54679196{DyK  _Toc54679197{DyK  _Toc54679197{DyK  _Toc54679198{DyK  _Toc54679198{DyK  _Toc54679199{DyK  _Toc54679199{DyK  _Toc54679200{DyK  _Toc54679200{DyK  _Toc54679201{DyK  _Toc54679201{DyK  _Toc54679202{DyK  _Toc54679202{DyK  _Toc54679203{DyK  _Toc54679203{DyK  _Ref54416098{DyK  _Ref54434463{DyK  _Ref54416098{DyK  _Ref54418142{DyK  _Ref54418565{DyK  _Ref54419996DyK http://www.owasp.orgyK ,http://www.owasp.org/DyK http://www.owasp.orgyK ,http://www.owasp.org/aDyK ;http://www.cgisecurity.com/lib/Threats_Countermeasures.pdfyK vhttp://www.cgisecurity.com/lib/Threats_Countermeasures.pdf=DyK 2http://www.cgisecurity.com/articles/xss-faq.shtmlyK dhttp://www.cgisecurity.com/articles/xss-faq.shtmlDyK http://www.lss.hryK &http://www.lss.hr/% i0@0 Normal_HmHsHtH X@BX Heading 1$ & Fx@&]5CJKHOJQJT@BT Heading 2$ & Fx@&]5CJOJQJ:!B: Heading 3 & F<@&56JBJ Heading 4$ & F<@&5mHsHu44 Heading 5 $@&6:: Heading 6 <@&6CJ:: Heading 7 <@&OJQJ>> Heading 8 <@& 6OJQJD D Heading 9 <@&56CJOJQJ<A@< Default Paragraph Font,, Header  9r , @, Footer  9r .@. TOC 15CJOJQJ*)@!* Page NumberCJHO2H Dopis_tekst $7]^7`a$bOBb Paragraf($<<]^`a$CJOJQJmHsHu6@6 TOC 2 ^5CJOJQJ66 TOC 3 ^6CJOJQJ&& TOC 4 X^X&& TOC 5  ^ && TOC 6 ^&& TOC 7 ^&& TOC 8 x^x&& TOC 9 @^@V^V Normal (Web)dd[$\$B*CJaJmH phsH u.U@. Hyperlink >*B*ph\B@\ Body Text $ Gzxa$B*CJOJQJhphLL Paragraf mag $dhxx]a$CJBB Paragraf table!$d<0"0 Paragraf sl"$a$0"@0 Caption #xx5\>V@A> FollowedHyperlink >*B* phrkrk &'(2KLUVWaw%t=h8a Y @ 2BP\ 1rJet !E"#G% '''(j((((()))+,n/1#1P1~11;2Q2}3e58:=4=>?G@@@@ A'AbACDCXDEF@GoGGHHHIIcJKLMOsPPQQQRS#STUUWYYYYYYZ[\F^#__`1bGdRdVeff(ffgg[h\hfhiij7jMj^jojjjjkkkkkTkUkjkkklkmknkokpksk0000000000000000000000000000000000000000000000000000 00 0 0 0  000#00# 0# 0# 00000#00 00J0J 0JJ0 0 0 0 0 # 0 # 0 # 0 # 0 # 0 # 0 # 0 0  0JJ0)0)0)0)# 0 )# 0 )# 0 )# 0 )0) 0JJ0;20;20;20;20;2 0JJ0=0=0=# 0=# 0=# 0=# 0=# 0=# 0=0= 0JJ0C0C0C0C# 0C# 0C# 0C# 0C# 0C0C 0JJ0I0I0I0I0I0I 00sP# 0sP# 0sP# 0sP0sP 0sPsP0S0S 0sPsP0U0U0U# 0U# 0U# 0U# 0U 0sPsP0Y0Y0Y0Y0Y 0Y 0Y 0Y 00Gd0Gd0Gd 0# 0 f# 0!f# 0"f# 0#f0f 0000000000@0@0@0@0@0@0@0@0@0@0@0@0 0000UU! (QAJlqrtuvwxy|D'Nt$BJmopsz{}~In "#%DToqrt8:;=\yHcefh2568Wr@[^_a )8SVWYxBiqd{%-7MO9(c(g(222DZ^ZbZYf}fffff/gyggg&hXhjjjrk X%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕ̕  XXXXX+9AGJe!!/X2$mtgxeöM2$yf̗5+6M@0(  B S  ?rk _Toc54679188 _Toc54679189 _Ref54416098 _Ref54434463 _Toc54679190 _Ref54418565 _Toc54679191 _Toc54679192 _Ref54418142 _Toc54679193 _Toc54679194 _Toc54679195 _Toc54679196 _Toc54679197 _Ref54419996 _Toc54679198 _Toc54679199 _Toc54679200 _Toc54679201 _Toc54679202 _Toc54679203 1K );2;2=CItPSSUYHdf]hsk  Pd!!)O2O23=CCIP"S"SUZQd'fehskfkmuwz CQYbw  o$t$2%8%=%C%'''''(((((('((((((((()))")***%*** ,,(,/,Q,^,,,'-4--- ..../// /0/>///// 00Z0d01111<1C1D1M1m1t1u1{11111;2@2F2O2Y2^2d2m2666777!9.9::$<)</<8<u<|<<<GGGG2H5H7H?HJHPHOI\I]IeIfIkI|IIIIIIIIYSaSVVWWWWWWYYYYYYYYZZt[~[]%]^ ^!^)^2^8^^^^^^^````TbZb.f3f7f?f@fFfKfWfffff ggg$g%g-gggggggggggfhkhrhzhiiiiiijMjPj^jajqjujwjjjjkkkkk)kUkZkdkikmknksk#Tr;yHf6r@_8W Brstpd.7P9(h(23DZcZ~ffzgg'hXhii'i(iiijjjjjjkkkkk)kSkUkZkckikmknkpksk Brstpd.7P9(h(23DZcZii'i(iiijjjjjkk)kSkZkcksksjusicC:\Webappsec.docsjusic#C:\Webappsec_Kom2003_Sasa_Jusic.docsjusicC:\Webappsec_Sasa_Jusic.docsjusicC:\Webappsec_Kom2003.docsjusickC:\Documents and Settings\sjusic\Application Data\Microsoft\Word\AutoRecovery save of Webappsec_Kom2003.asdsjusic!F:\Projekti\webapps\Webappsec.docsjusicC:\Webappsec.docSasagC:\Documents and Settings\sjusic.LSS\Application Data\Microsoft\Word\AutoRecovery save of Webappsec.asdSasa.D:\Projekti\2003\Kom2003\Webapps\Webappsec.docSasa.D:\Projekti\2003\Kom2003\Webapps\Webappsec.docLOJ!Byt>T U/z ڗo&<P%A1  "p8E>#*hnx'IT ](f9-r |70M8:*v9ITSz:ڳ? > ^> `OJQJo( ^`OJQJo(o ^`OJQJo( ^`OJQJo( ~~^~`OJQJo(o NN^N`OJQJo( hh^h`OJQJo(p s^`sOJQJo(p ^`OJQJo(op pp^p`OJQJo(p @ @ ^@ `OJQJo(p ^`OJQJo(op ^`OJQJo(p ^`OJQJo(p ^`OJQJo(op PP^P`OJQJo(p ^`OJQJo(p ee^e`OJQJo(op 5 5 ^5 `OJQJo(p ^`OJQJo(p ^`OJQJo(op ^`OJQJo(p uu^u`OJQJo(p EE^E`OJQJo(op ^`OJQJo(h 88^8`OJQJo(h ^`OJQJo(oh   ^ `OJQJo(h   ^ `OJQJo(h xx^x`OJQJo(oh HH^H`OJQJo(h ^`OJQJo(h ^`OJQJo(oh ^`OJQJo(h 88^8`OJQJo(h ^`OJQJo(oh   ^ `OJQJo(h   ^ `OJQJo(h xx^x`OJQJo(oh HH^H`OJQJo(h ^`OJQJo(h ^`OJQJo(oh ^`OJQJo(%PaYXz 8E>#?|dH|oP9-A1 T ߰jZ)Yn@{i9ZͦQiI' S8V;ѱo:>:=-9]pVvr)}d'}I-o臔YqD=/3 KS{M> ?H\\BELINEA\HP LaserJet 1200 Seri? dXXLetter.HP LaserJet 1200 Series PCL 62%xeP.@=gnۡZ!ěE 6!ѥHjc)b{Xyn997wfjM^1)Z!y,u:MMP'#$qGC b'{TlfX4B]gTmemhu72&yϐ 3n >߰jZ)Yn@{i9ZͦQiI' S8V;ѱo:>:=-9]pVvr)}d'}I-o臔YqD=/3 KS{M> ?Hii,nJih !(()(+(,(1(2(5(<(=(@(A(D(G(H(I(K(L(P(S(Z(^(b(f(h(jrk @@ (@$*0:|@@@PTV`bhvx~(@@@UnknownGz Times New Roman5Symbol3& z Arial?5 z Courier New;Wingdings"hzzrJ q X-!0dlfh 2Q1D:\appl\MSOffice97\Templates\Interni dokument.dot _ferSasaOh+'0  4 @ L Xdlt| __ferererInterni dokument.dot9Sasani 3saMicrosoft Word 9.0t@vA@$ :@|`@`q X՜.+,D՜.+,H px   FER-ZESOI18-l  _ Title 8@ _PID_HLINKSAd~shttp://www.lss.hr/P2http://www.cgisecurity.com/articles/xss-faq.shtml$;http://www.cgisecurity.com/lib/Threats_Countermeasures.pdf]~http://www.owasp.org/]{http://www.owasp.org/:\ _Toc54679203:V _Toc54679202:P _Toc54679201:J _Toc546792003D _Toc546791993> _Toc5467919838 _Toc5467919732 _Toc546791963, _Toc546791953& _Toc546791943  _Toc546791933 _Toc546791923 _Toc546791913 _Toc546791902 _Toc546791892 _Toc54679188  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry Fv{`Data 51Table~WordDocument/SummaryInformation(DocumentSummaryInformation8CompObjjObjectPoolv{`v{`  FMicrosoft Word Document MSWordDocWord.Document.89q