You are on page 1of 120

SIGURNOST WEB APLIKACIJA

Literatura:

• The Web Application Hacker’s Handbook:


Discovering and Exploiting Security Flaws
• Microsoft - Improving Web Application Security -
Threats and Countermeasures
• Web Services Security
• Seven Deadliest Web Application Attacks
• Mario Kozina, FER – Sigurnost web aplikacija
• www.cert.hr
• ...
https://www.owasp.org

http://www.webappsec.org

www.sans.org www.cert.hr
Što je web aplikacija?
• Web aplikacija je aplikacija kojoj se pristupa
putem web-a koristeći Internet ili intranet mrežu

Izvor: Nastavni materijali - Ekonomski fakultet u Osijeku - Kolegij: Razvoj poslovnih aplikacija - Nositelj:
prof.dr.sc. Marijana Zekić-Sušac -
http://oliver.efos.hr/nastavnici/mzekic/nast_materijali/razvojni_alati/P12_Web_aplikacije.pdf
Razlika između klijent-server
aplikacija i web aplikacija?
• Kod klijent-server aplikacija svaka aplikacija sastoji se od dijela koji
se izvodi na poslužitelju (serveru) i dijela koji treba instalirati na
korisničko računalo (klijent).
• Klijent preko svog sučelja daje zahtjeve serveru koji ih izvodi, klijent
dobiva izvještaje.
• U slučaju da tvrtka ima veliki broj klijenata, instaliranje i održavanje
aplikacija na korisnička računala je tada sporo i zahtjevno.
• Kod web aplikacija, nasuprot tome, nije potrebno instalirati
aplikaciju na korisničko računalo.
• Web aplikacija umjesto izvršne datoteke (.exe) generira skup
dokumenata koji se mogu vidjeti s pomoću web preglednika (npr.
Internet Explorer, Mozilla Firefox i dr.) koji podržavaju
html/xhtml/xml.
Što rade web aplikacije?
• Web aplikacije se najčešće sastoje od sljedećih
aktivnosti (Sol,2008):

1. Korisnik aktivira web preglednik


2. Putem web sučelja postavi određeni upit (npr. traži cijenu
nekog artikla i sl.)
3. Sučelje za upite šalje zahtjev programu na poslužitelju
4. Program na poslužitelju daje odgovor na zahtjev (npr. cijenu
artikla) koristeći neki izvor podataka (bazu ili dr. Pozadinsku
uslugu)
5. Odgovor se iz baze prosljeđuje preko poslužitelja na klijent
6. Odgovor preko web sučelja postaje vidljiv korisniku
Primjeri
• Shopping (Amazon)
• Social networking (MySpace)
• Banking (Citibank)
• Web search (Google)
• Auctions (eBay)
• Gambling (Betfair)
• Web logs (Blogger)
• Web mail (Hotmail)
• Interactive information (Wikipedia)
Koji je princip rada web
aplikacija?
• Web aplikacija dinamički generira niz html dokumenata koji se
mogu vidjeti s pomoću web preglednika
• Ako se žele dodati neki dinamički elementi u korisničko sučelje,
koriste se skriptni jezici koji se izvode na klijentskoj strani (npr.
JavaScript)
• Svaka pojedina stranica prikazuje se korisniku kao statični dokument
(stranicu), ali se stranice interaktivno mogu mijenjati u aplikaciji
• Korisnik može podatke unositi s pomoću web formi koje su
uključene u stranice
• Aplikacija se sastoji od sesija (eng. sessions)
• Za vrijeme svake sesije, web preglednik interpretira i prikazuje
stranice, tj. web preglednik vrši ulogu sučelja aplikacije prema
korisniku
Prednosti i nedostaci web
aplikacija
Prednosti:
•Rade bez obzira na operativni sustav koji je instaliran na korisnikovom
računalu (programer ne mora raditi sučelje posebno za Windows,
MacOS, Unix, ili dr. operacijski sustav)
Nedostaci:
• Još uvijek nedovoljno usaglašeni standardi za HTML, CSS(Cascading
Style Sheet) i DOM (Document Object Model) od strane proizvođača
web preglednika
•Korisnik u svom pregledniku može samostalno podesiti neke
parametre prikaza, npr. font, veličinu slova, i dr., pa se narušava
konzistentnost prikaza aplikacije
• Brzina rada aplikacije ovisi o brzini mrežne povezanosti sa
poslužiteljem na kojem se nalazi aplikacija (brzini Interneta ili
intraneta)
• Problemi sa sigurnošću na mreži
Arhitektura web aplikacija
• Web aplikacije strukturirane su u tri glavna sloja (tzv.
troslojna arhitektura ili eng. “three-tiered
architecture”):
1. Prezentacijski sloj (eng. Presentation tier) – sloj prikaza
informacija korisniku putem preglednika
2. Aplikacijski sloj (eng. Application tier ili Middleware
tier, ili Business Logic) – sloj koji upravlja aktivnostima
koje aplikacija treba izvršavati (tj. obradom ili
funkcioniranjem aplikacije)
3. Podatkovni sloj (eng. Data tier) – sloj koji upravlja
pohranjivanjem podataka u bazu i prikazom podataka
iz baze na poslužitelju
Tehnologije u pojedinim
slojevima web aplikacije
• Za prezentacijski sloj koristi se – web
preglednik (MS Internet Explorer, Mozilla
Firefox ili dr.)
• Za aplikacijski sloj koriste se – dinamičke web
tehnologije (ASP, ASP . NET, PHP, JavaScript,
CGI, ColdFusion, JSP/Java,Perl, Python, i dr.)
• Za podatkovni sloj koriste se sustavi za
upravljanje bazama podataka (npr. SQLserver,
MySQL, DB2, i dr.)
Razvoj mrežnog računarstva
Sigurnost
• Proces, a ne završno stanje
• Temeljni elementi:
1)Autentikacija
2)Autorizacija
3)Auditing
4)Integritet, dostupnost, povjerljivost
• Prijetnja (eng. Threat) – svaki potencijalni
događaj koji može naštetiti (resursu,
vrijednosti, sustavu).
• Ranjivost (eng. Vulnerability) – slabost koja
može učiniti prijetnju mogućom
• Napad (eng. Attack) – aktivnost koja
iskorištava ranjivost ili donosi prijetnju
• Protumjera – zaštita koja uočava prijetnju i
umanjuje rizik
Moja web aplikacija je sigurna?
• „This site is absolutely secure. It has been
designed to use 128-bit Secure Socket Layer
(SSL) technology to prevent unauthorized users
from viewing any of your information. You
may use this site with peace of mind that your
data is safe with us.”
Web aplikacije – sigurnost?
• Web preglednici
• Serveri
• Vatrozid
• Protokol – HTTP/HTTPS:
• “The number of known web application
vulnerabilities is growing by about 3,000 to
4,000 disclosures per year, according to the
IBM X-Force 2010 Mid-Year Trend and Risk
Report.”
Neki od razloga za zaštitu web
aplikacija za poduzeća
• Gubitak prihoda
• Gubitak povjerenja kupaca
• Smanjeno korištenje on-line kupnje
• Urušen ugled
• Pad vrijednosti (dionice)
• Novčani gubici zbog prijevare
• On line plaćanje – gubitak prava i penali
• ...
Strategija
• Zaštita web aplikacija nije lagan posao
• Organizacijski i tehnički dio mora biti uključen
u strategiju
• Prosječno poduzeće u svom radu koristi na
desetke ili stotine web servisa i aplikacija
Odrediti zaduženja – tko je za
što odgovoran?
• Developeri aplikacija?
• Administratori sustava i mreže?
• Web administratori?
• Uprava?
• CISO?
VM – Vulnerability Management –
koraci:
1. Popis i kategorizacija web aplikacija – važnost i
prioritet
2. Skeniranje ranjivosti – automatizirani alati - web
application security scanner, ali i ručno skeniranje
3. Provjera dobivenih rezultata – lažno pozitivni i lažno
negativni rezultati
4. Procjena rizika
5. Implementacija zakrpi i ažuriranja
6. Ponovna provjera
Važno
• Dokumentacija
• Logovi
Web application
security scanner
• Open-source?
• Kupiti komercijalni?
• Razvijati vlastiti?
• SaaS?
Elementi prema NIST SP 500-269
• Identifikacija najčešćih tipova ranjivosti
• Generiranje izvještaja
• Što manja mogućnost pogreške
Web Application Security Scanner
Evaluation Criteria http://projects.webappsec.org/Web-
Application-Security-Scanner-Evaluation-Criteria

• Lagan za korištenje
• Brzo učenje – vrijeme=novac
• Skalabilan – opseg,uloženo-dobiveno
• Točna kategorizacija web aplikacija
• Korištenje protokola – HTTP I SSL/TLS
• Crawling – provjera stranice po stranice web
aplikacije
• Parsing – sintaksna analiza - struktura
• Kontrola testiranja – pauza, API
• Izvještavanje
Tri pristupa skeniranju
• Black box
• White box
• Grey box testing
Black box
• Gleda na aplikaciju na način kako je vidi
korisnik – završno stanje – server, protokol,
pretraživač, kod – kao kod normalnog
korištenja aplikacije
White box
• Provjera koda – ranjivosti i nedostaci
Grey box
• Kombinacija prethodna dva pristupa
Najčešće ranjivosti web aplikacija

Pogledati još: https://www.owasp.org/index.php/Top_10_2010-Main i


http://projects.webappsec.org/w/page/13246978/Threat%20Classification
Najkritičnije ranjivosti Web aplikacija prema OWASP-u su:

• Izvršavanje napadačkog koda (engl. Cross Site Scripting – XSS)


• Ranjivosti na ubacivanje koda (engl. Injection Flaws )
• Izvođenje datoteka sa zlonamjernim sadržajem (engl. Malicious File
Execution)
• Nesigurna izravna referenca na objekt (engl. Insecure Direct Object
Reference)
• Krivotvorenje zahtjeva (engl. Cross Site Request Forgery – CSRF)
• Curenje informacija i neispravno rukovanje pogreškama (engl. Information
Leakage and Improper Error Handling)
• Kompromitirana autentifikacija i kontrola sjednice (engl. Broken
Authentication and Session Management)
• Nesigurna kriptografska pohrana (engl. Insecure Cryptographic Storage)
• Nesigurna komunikacija (engl. Insecure Communications)
• Neuspješna zaštita pristupa URL-u (engl. Failure to Restrict URL Access)
Prijetnje i protumjere
Razina sigurnosti kategorija Web
aplikacija i programske podrške

Izvor: Kozina Mario, FER, Automatizirano određivanje vrste Web aplikacije, FER,
2007.
Napadi - prijetnje za Web aplikacije – prema
OWASP-ovoj klasifikaciji Klase ranjivosti
1. Napadi vezani uz autentifikaciju
2. Napadi vezani uz autorizaciju
3. Napadi na klijentsku stranu
4. Napadi vezani uz izvršavanje naredbi
5. Otkrivanje povjerljivih informacija
6. Logički napadi

Izvor: Kozina Mario, FER, Sigurnost web aplikacija, FER, 2006.


1. Ranjivosti vezane uz
autentifikaciju
• „Autentifikacija, sa gledišta Web aplikacije, je
proces kojim se provjerava identitet korisnika
određene usluge Web aplikacije.”

• “nešto što imaš”


• “nešto što znaš”
• “ onoga što jesi”
Brute force napadi
• „Pretraživanje grubom silom ili Brute force napad je
automatizirani proces koji se koristi metodom pogađanja i
promašaja kako bi se otkrilo korisničko ime, lozinka,
kriptografski ključ ili broj kreditne kartice.”
• dvije vrste Brute force napada: normalni i reverzni
• Normalno pretraživanje koristi jedno korisničko ime i velik
skup lozinki, dok reverzno pretraživanje koristi velik skup
korisničkih imena i samo jednu lozinku.
• Protumjere: limitiranje broja pokušaja upisivanja lozinke,
zaključavanje korisničkog profila nakon neuspješnog logiranja,
kompleksnost odgovora (npr. CAPCHA)
Primjer
guest
Admin
123123
Password
Izvor: http://www.taddong.com/docs/SAPsession_%28Fixation
%29_Attacks_and_Protections-OWASP-RaulSiles_Taddong.pdf
Nedovoljna razina autentifikacije
• „Nedovoljna razina autentifikacije nastupa
kada Web aplikacija omogućava
potencijalnom napadaču pristup osjetljivom
sadržaju ili funkcionalnosti, a da se pritom
napadač nije propisno autentificirao.”
• „Ograničavanje pristupa osjetljivom sadržaju
je običajno za većinu Web aplikacija, dok je
pristup funkcionalnosti običajan uglavnom za
administratorske Web alate.”
• resursi se najčešće štite skrivanjem lokacija-
URL-a. Iako potencijalni napadač ne zna o
kojima se točno resursima radi, on njima može
direktno pristupiti korištenjem URL-a.
• Određeni URL se može otkriti korištenjem
alata za grubo pretraživanje kojima se
pronalaze lokacije mapa i datoteka, poruke s
greškama i administratorski zapisi (engl. logs).
Primjer
• Web aplikacije koje posjeduju
administratorsku mapu /admin/ direktno
unutar osnovne mape Web aplikacije (root).
[WEB ROOT]
/admin
https://[SERVER URL]/admin/admin.html
admin.html
/products
/sales
...
index.html
login.html
...
• Protumjera: dodatno zaštititi resurse
dozvolama, provođenje penetracijskih
testova...
Nedovoljna zaštita korisnikove
lozinke
• „ Nedovoljnom zaštitom korisnikove lozinke se
omogućava napadaču da ilegalno dobije,
promijeni ili obnovi lozinku drugog korisnika.”

PROBLEM: Korisnik bi trebao biti jedina osoba koja točno zna lozinku.
Kako vrijeme prolazi, korisnikova sposobnost pamćenja lozinke se
smanjuje, pogotovo ako se uzme u obzir da korisnik ima desetak i više
korisničkih računa za različite Web aplikacije.
• Ukoliko korisnik zaboravi lozinku, tada pristupa
procesu za obnovu lozinke.
• “tajno pitanje” (engl. secret question) , „hint”
ili e-mail, adresa, broj kartice...
PRIMJER: Napadač pošalje zahtjev s određenim korisničkim imenom
procesu za obnovu lozinke. Proces odgovori na njegov zahtjev s “tajnim
pitanjem” tipa “U kojem mjestu si rođen?”.Ukoliko napadač posjeduje
brute force alat u čijem se rječniku zapisani svi gradovi u Hrvatskoj,
postoji velika mogućnost da će ponuditi točan odgovor, odnosno
prevariti proces za obnovu i saznati korisnikovu lozinku.
2. Napadi vezani za autorizaciju
• „Autorizacija, s gledišta Web aplikacija, je
proces kojim se utvrđuje da li određeni
korisnik, usluga ili aplikacija ima potrebna
dopuštenja za izvođenje određene radnje.”

• omogućavaju napadaču povećanje njihovih


privilegija i pristup zabranjenim resursima.

Izvor: Kozina Mario, FER, Sigurnost web aplikacija, FER, 2006.


Nagađanje vjerodajnog
identifikacijskog broja
• Web aplikacije najčešće za izmjenu informacija
s korisnicima koriste HTTP koji spada u grupu
protokola bez stanja (engl. stateless) – korisnik
promatran od strane poslužitelja kao da je prvi
put pristupio aplikaciji
• označavanje korisnika se provodi
dodjeljivanjem vjerodajnog identifikacijskog
broja poznatog kao identifikator sjednice
(engl. Session ID)
• Identifikator sjednice je kolačić (engl. Cookie)
• Sjednički identifikator se najčešće pohranjuje
unutar datoteke ili URL-a, a također ga je
moguće pohraniti unutar skrivenog polja
(engl. Hidden form).
• „Nagađanje sjedničkog identifikacijskog broja
je napadačka tehnika kojom se otima identitet
drugog korisnika”
Primjer
Izvor: Kozina Mario, FER, Automatizirano određivanje vrste Web aplikacije, FER, 2007., p. 10

1) Napadač se spaja na Web aplikaciju kako bi dobio trenutni sjednički


identifikator. Web aplikacija mu vraća sjednički identifikator s vrijednošću 1000.
2) Pošto napadač zna da se radi o inkrementirajućem algoritmu za generiranje
sjedničkog identifikatora, napadač jednostavno izračuna vrijednost sljedećeg
identifikatora (vrijednost 1001).
3) Napadač izmjeni vrijednost znakovnog niza unutar sjedničkog identifikatora
ili URL-a na vrijednost 1001 i upućuje zahtjeve Web aplikaciji sve dok se ne
prijavi sljedeći korisnik. Nakon što se korisnik prijavi, napadač može koristiti
njegove privilegije koristeći izračunati sjednički identifikator.
Nedovoljna autorizacija
• „Nedovoljnom autorizacijom, Web aplikacija
omogućava napadaču pristup sadržaju ili
funkcionalnosti koja bi inače trebala biti
zaštićena višom razinom sigurnosti.”
• Autorizacijski proces se provodi poslije
procesa autentifikacije prisiljavajući korisnike,
usluge ili aplikacije na ograničeno korištenje
resursa.
• Autorizacijska prava se najčešće uređuju
sigurnosnom politikom.
• U kontekstu Web aplikacija, resursi koje treba
dodatno zaštiti su podaci isključivo
namijenjeni administratoru Web aplikacije.

Primjer nedovoljne autorizacije su aplikacije koje su


administratorske podatke skrivali u mapama s
nazivima /admin/ ili /logs/, kojima je mogao pristupiti bilo koji
autentificirani korisnik i poduzeti
neželjene radnje kao što su rekonfiguracija poslužitelja
Nedovoljna kontrola trajanja
korištenja usluge
• „Nedovoljnom kontrolom trajanja korištenja
usluge, Web aplikacija omogućava napadaču
korištenje starih sjedničkih identifikatora (engl.
Session ID) za autorizaciju.”
• Nedostatak kontrole trajanja usluge, odnosno
nedostatak kontrole životnog vijeka sjedničkog
identifikatora može povećati rizik od
određenih vrsta napada.
Primjer nedovoljne kontrole trajanja usluge je
korištenje višekorisničke (engl. Shared)
računalne okoline (Internet caffe, knjižnica
itd.). Ukoliko se korisnik prikladno ne odjavi s
vlastitog korisničkog računa, tada postoji
mogućnost da će sljedeći korisnik računala
upotrebom gumba za povratak (engl. back
button) Web preglednika, pregledati sve
stranice posjećene od strane prvog korisnika
(žrtve). Nadalje, ako prvi korisnik odjavom nije
prekinio sjednicu, tada je moguće da drugi
korisnik pregledavajući povijest (engl. History) Slika: Internet caffe, Izvor:
posjećenih stranica dođe do određenih yugatech.com
sadržaja za koje mu inače trebaju prava prvog
korisnika.
Fiksacija usluge (sjednice)
• „Fiksacijom usluge napadač podvaljuje korisniku fiksni
identifikator sjednice (engl. Session ID), koji kasnije napadač
koristi za autorizaciju.”
• mnoštvo napadačkih tehnika – najčešće XSS napadi i
prilagođeni HTTP zahtjevi
• Cilj ove tehnike je, nakon što napadač postavi identifikator
sjednice na neku fiksnu vrijednost, pričeka korisnika da se
prijavi na tu predefiniranu sjednicu s podvaljenim
identifikatorom. Nakon što se korisnik prijavi, napadač
upotrebljava taj identifikator sjednice, pridobiva korisnikov
identitet i koristi njegove privilegije.
• Propust otkriven krajem 2002. godine - Mitja
Kolšek
http://www.acrossecurity.com/papers/session_fixation.pdf
3 faze
1. Postavljanje sjedničkog identifikatora
2. Fiksacija usluge
3. Ulazak i korištenje usluge
Primjer

http://www.acrossecurity.com/papers/session_fixation.pdf

U prvom koraku, napadač koji je također legitimni korisnik bankovnog sustava, se ulogira na poslužioca (1) i dobije session
ID s vrijednošću 1234 (2). Nakon toga napadač pošalje posebno skrojeni link
http://online.worldbank.dom/login.jsp?sessionid=1234 korisniku, te pokušava namamiti korisnika da pritisne link (3).
Korisnik pritišće link, koji otvara poslužiteljsku stranicu za prijavu 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 korisničko ime i lozinku (5) te ih prosljeđuje poslužitelju kako bi mu
dodijelio pristup bankovnom računu. Ali, napadač također zna sjednički identifikator, te može pristupiti korisnikovom
računu koristeći account.jsp?sessionid=1234 (6). Kako je sjednički identifikator već unaprijed fiksiran prije nego što se
korisnik prijavio na sustav, kažemo da se korisnik prijavio u sjednicu postavljenu od napadača.
3. Napadi na klijentsku stranu
• orijentirani prema korisnicima Web aplikacija
• Korisnik očekuje od Web aplikacije
dostavljanje ispravnog sadržaj i da se prilikom
njegovog korištenja Web aplikacije neće
dogoditi nikakav napad na njega.
• Mnoštvo tehnika napada
Ubacivanje nepostojećeg sadržaja
(engl. Content spoofing)
• „Ubacivanje nepostojećeg sadržaja je vrsta
napada kojom napadač želi uvjeriti korisnika
da je određeni sadržaj legitiman i da ne
potječe s nekog vanjskog izvora. Ova
napadačka tehnika je najčešće usmjerena
prema Web aplikacijama koje dinamički
generiraju URL-ove prema svom HTML
sadržaju.”
Primjer
• http://foo.example/news?id=123&title=Company+y+stock+goes+up+5+percent+o
n+news+of+sale <HTML>

<FRAMESET COLS="100, *">

<FRAME NAME="pr_menu" src="menu.html">

<FRAME NAME="pr_content"

src="http://foo.example/pr/01012003.html">

</FRAMESET>
</HTML>
• http://foo.example/pr?pg=http://attacker.example/spoofed_press_release.html?
<HTML>

<FRAMESET COLS="100, *">

<FRAME NAME="pr_menu" src="menu.html">

<FRAME NAME="pr_content" src="


http://attacker.example/spoofed_press_release.html">
Pogledati izvor:
http://projects.webappsec.org/w/pa </FRAMESET>

ge/13246917/Content%20Spoofing </HTML>
Izvršavane napadačkog koda
• Izvršavane napadačkog koda ili cross-site
scripting (XSS) je napadačka tehnika koja
prisiljava Web aplikaciju na proslijeđivanje
napadačkog izvršnog koda korisniku, koji se
zatim učitava u korisnikovom Web pregledniku
i izvršava.
• Najčešće napisan korištenjem JavaScript
skriptnog jezika, ali također i VBScript, ActiveX,
Java i Flash
• Koristi se za krađu korisničkih računa (krađa
sjedničkog identifikatora), usmjeravanje Web
preglednika na neke druge lokacije, ili
prosljeđivanje štetnog sadržaja od strane Web
aplikacije.
Dvije vrste XSS napada
• neustrajni (engl. non-persistent) - nedostatak tipa 1 -
navode korisnika na posjećivanje posebno skrojenih
linkova koji su povezani s štetnim kodom. Kada
korisnik posjeti link, kod koji je pohranjen unutar
URL-a će se izvršiti unutar korisničkog Web
preglednika.
• ustrajni napadi (engl. persistent) - nedostatak tipa 2
- kada je određeni štetni kod pohranjen unutar Web
aplikacije neko određeno vrijeme – npr. portali, Web-
mail ili Web-chat – korisnik ne mora pritisnuti link
nego je dovoljno da pregleda sadržaj
Primjer - neustrajni

0) Ciljni korisnik posjecuje odredeni legitimni web poslužitelj na koji se prijavljuje


putem korisnickog imena i zaporke te je u mogucnosti tamo trajno pohraniti osjetljive
podatke, npr. informacije o kreditnoj kartici. Doticni web poslužitelj sadrži XSS
nedostatak tipa 1.
1) Napadač kreira hiperlink koji, osim URL-a legitimnog poslužitelja, sadrži i
zlonamjerni skriptni kod.
2) Napadač šalje zlonamjerni hiperlink korisniku (npr. putem elektroničke pošte) tako
da isti izgleda kao da potjece od strane legitimnog poslužitelja.
3) Korisnik aktivira hiperlink, pri čemu se legitimnom web poslužitelju šalje HTTP
zahtjev za ranjivom web stranicom. Korisnik je prijavljen na legitimni poslužitelj.
4) Legitimni web poslužitelj generira dinamicku web stranicu tako da ista, zbog
postojeceg XSS propusta, sadrži umetnuti zlonamjerni skriptni kod i šalje je korisniku
kao HTTP odgovor.
5) Zlonamjerni skriptni kod iz zaprimljene web stranice izvršava se unutar
korisnikovog web preglednika s istim ovlastima kao da je potekao od legitimnog
poslužitelja.
6) Zlonamjerni skriptni kod dohvati korisnikove kolacice vezane uz legitimni
poslužitelj. Dotični kolačići mogu sadržavati korisnicke autentikacijske podatke ili
informacije vezane za kreditnu karticu.
7) Korisnikov web preglednik dobiva informaciju o preusmjeravanju na maliciozni
web poslužitelj koji je pod napadacevom kontrolom.
8) Sakupljeni kolačići šalju se na maliciozni poslužitelj bez korisnikovog znanja.
Napadaču se otvara mogućnost krade korisnikovog identiteta.

Izvor: www.cert.hr - Analiza XSS sigurnosnih


Propusta, CCERT-PUBDOC-2006-05-157
Primjer - ustrajni
0) Legitimni web poslužitelj korisnicima omogućava trajno postavljanje poruka i
ostalog sadržaja na svoje web stranice kako bi ih ostali korisnici mogli pregledavati.
Web stranica koja zaprima spomenute korisničke podatke sadrži XSS nedostatak tipa
2.
1) Napadač na dotičnu ranjivu web stranicu postavi poruku koja sadrži i zlonamjerni
skriptni kod. Naslov poruke osmišljen je tako da privuče što je više moguće korisnika.
Takva poruka trajno je pohranjena na strani poslužitelja i prilikom svakog generiranja
odgovarajuce dinamičke web stranice, poruka sa zlonamjernim kodom biti ce
ukljucena u nju.
2) Korisnik pristupi web stranici s napadačevom porukom, tj. zatraži je od legitimnog
web poslužitelja.
3) Korisnik je prijavljen na legitimni poslužitelj.
4) Legitimni web poslužitelj generira dinamičku web stranicu s umetnutim
zlonamjernim skriptnim kodom i šalje je korisniku kao HTTP odgovor.
5) Zlonamjerni skriptni kod iz zaprimljene web stranice izvršava se unutar
korisnikovog web preglednika s istim ovlastima kao da je potekao od legitimnog
poslužitelja.
6) Zlonamjerni skriptni kod dohvati korisnikove kolačiće vezane uz legitimni
poslužitelj.
7) Korisnikov web preglednik dobiva informaciju o preusmjeravanju na maliciozni
web poslužitelj koji je pod napadačevom kontrolom.
8) Sakupljeni kolacici šalju se na maliciozni poslužitelj bez korisnikovog znanja.
Napadaču se otvara mogućnost krade korisnikovog identiteta.
Izvor: www.cert.hr - Analiza XSS sigurnosnih
Propusta, CCERT-PUBDOC-2006-05-157
4. Ranjivosti vezane uz izvršavanje
naredbi
• „... podrazumijevaju napade koji su posebno
dizajnirani kako bi izvršili kompromitirajuće naredbe
nad Web aplikacijom”
• Sve Web aplikacije procesiraju korisnički unesene
ulazne podatke kako bi formirale i ispunile zahtjeve
• Ako se korisnički podaci loše ukomponiraju unutar
sadržaja Web aplikacije, tada potencijalni napadač
može izmijeniti ili potaknuti izvođenje pojedinih
naredbi
Prelijevanje spremnika
• „je ranjivost koja dopušta promjenu ili
onemogućavanje toka izvođenja aplikacijskih
procesa na način da se prebrišu određene
dijelovi memorije”
• programsko ugrožavanje memorijskog
spremnika koje rezultira pojavom greške
unutar programa, odnosno Web aplikacije
• nastupa kada podatak upisan u memoriju
pređe alociranu veličinu memorije spremnika
• tehnika se učestalo koristila za rušenje Web
poslužitelja – Dos napadi
• Danas vrlo rijetko ugrožava Web aplikacije –
potrebno detaljno poznavanje koda aplikacije
• najčešće se javlja u CGI aplikacijama pisanim u
C ili C++ programskom jeziku
Napadi formatiranim znakovnim
nizovima
• „mijenjaju programski tok aplikacije koristeći
različite oblike formatirajućih naredbi kako bi
dobili pristup određenom memorijskom
prostoru”
• najčešće nastaje zbog lijenosti programera koji
prilikom pisanja izvornog koda aplikacije ne
koriste ispravne oblike formatirajućih naredbi
• Propust otkriven 1999. godine
Primjer
• Korištenje printf(string) umjesto printf(“%s”,
string)
• Ispisivanje ili upisivanje string-a u buffer
Napadi formatiranim znakovnim nizovima se koriste za:

1. Čitanje podataka s stoga, pri čemu napadač koristi


konverzijski znak “%x” unutar printf naredbe te kao rezultat
dobiva vrijednosti stoga.
2. Čitanje znakovnih nizova. Ukoliko se rezultat printf naredbe
vrati napadaču, tada on koristeći konverzijski znak “%s”
može čitati znakovne nizove iz memorije.
3. Pisanje cjelobrojnih konstanti u procesnu memoriju. Ukoliko
napadač koristi “%n” konverzijski znak, tada napadač može
upisati cjelobrojnu konstatnu na bilo koju lokaciju u
memoriji. Primjerice, može izmjeniti kontrolne zastavice
unutar programa kako bi promijenio tok izvođenja programa.
Izvršavanje OS naredbi
• „je napadačka tehnika koja se koristi
manipulacijom aplikacijskih ulaznih podataka
kako bi se izvršile naredbe operacijskog
sustava na kojem je pokrenuta Web aplikacija”
Primjer
• Primjer je Web aplikacija kojoj napadač putem URL-a proslijedi sljedeći
podatak:
http://primjer/temp.php?dir=%3Bcat%20/etc/passwd

• Zbog propusta aplikacije da sanira vrijednost varijable dir, napadač će


ovom naredbom doći do sadržaja /etc/passwd datoteke koja sadrži
povjerljive podatke
SQL ubacivanje
• „je napadačka tehnika koja se koristi kako bi se
ugrozila sigurnost Web aplikacije koja
konstruira SQL izjave iz korisnički unesenih
podataka”
• Structured Query Language (SQL) je
specijalizirani programski jezik koji se koristi za
rukovanje bazama podataka putem izjava i
upita.
• Kada Web aplikacije ne uspiju pravilno sanirati
korisnički unesene podatke, tada postoji
mogućnost izmjene konstrukcije pozadinske
SQL izjave od strane napadača.
• Posljedica ove napadačke tehnike je
preuzimanje kontrole nad bazom podataka i
čak izvršavanje naredbi nad sustavom
Primjer
String SQLQuery = “SELECT Username FROM Users WHERE Username = ‘”
+username + “’ AND Password = ‘” + password + “’”;

•uzimaju se korisnički uneseni podaci iz


autentifikacijskog obrasca i direktno ih ubacuje u
SQL izjavu (putem varijabli username i
password).
•Pretpostavka je da napadač u autentifikacijski
obrazac za korisničko ime i lozinku upisuje
sljedeće:
Korisničko ime: ' OR ''='
Lozinka: ' OR '‘=‘

•Tada će rezultirajuća SQL izjava izgledati ovako:


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

•Uspoređuje se ' ' (prazan niz) s ' ' (prazan niz) –


rezultat je istinit
LDAP i Xpath ubacivanje
• LDAP i XPath ubacivanje su po smislu i načinu
izvedbe identični SQL ubacivanju
• Lightweight Directory Access Protocol (LDAP)
je otvoreni standard za postavljanje upita i
manipulaciju X.500 direktorijima (mapama).
• LDAP se temelji na TCP-u, a Web aplikacije iz
korisnički unesenih podataka kreiraju LDAP
izjave za rad s dinamičkim Web stranicama
• XPath je jezik koji se koristi kako bi se
referencirali određeni dijelovi XML
dokumenta. Može se koristiti direktno od
strane Web aplikacije kako bi se postavili upiti
nad XML dokumentom. Xpath izjave su po
strukturi vrlo slične SQL izjavama, te
omogućavaju izdvajanje pojedinih elemenata i
atributa iz XML dokumenta
5. Otkrivanje povjerljivih
informacija
• „Otkrivanjem povjerljivih informacija,
potencijalni napadač namjerava dobiti
određene sistemske informacije o Web
aplikaciji”
Rasipanje informacija
• „Rasipanje informacija je sigurnosni propust
kojima Web aplikacije otkrivaju osjetljive
podatke kao što su programerski komentari i
detaljne poruke o pogreškama, koje mogu
pomoći napadaču u kompromitranju sustava”
• služi napadaču kao vodilja pri konstrukciji
napada – treba svesti na minimum
Primjer
<P>
<!--Ako slika primjer.jpg ne postoji, resetiraj Faramira -->
<a href=”www.fer.hr”><img src=”primjer.jpg” /></ a>
</P>

•programer je unutar komentara naveo ime Web


poslužitelja i na taj način opskrbio napadača
dodatnom informacijom koja može poslužiti za
napad
Izvor: Kozina Mario, FER, Automatizirano određivanje vrste Web aplikacije, FER, 2007., p. 19
Izlistavanje mapa
• funkcija Web poslužitelja koja izlistava sve
datoteke unutar tražene mape ukoliko ne
postoji osnovna datoteka
(index.html,home.html, default.htm)
• Ukoliko ova datoteka ne postoji, poslužitelj će
izlistavanjem mape korisniku poslati cjeloviti
ispis direktorija – ls ili dir
Otkrivanje prečaca
• „Otkrivanje prečaca je napadačka tehnika čiji je cilj
pristupiti datotekama, mapama i naredbama koje su
inače izvan osnovne mape Web aplikacije. Napadač
ovom tehnikom pokušava podesiti URL na takav
način da će Web aplikacija izvršiti ili otkriti sadržaj
određenih datoteka koje su razmještene po cijelom
Web poslužitelju.
• Uglavnom se odnosi na sustave koje imaju HTTP
sučelje prema korisniku.
• postoji niz specijalnih znakova pomoću kojih
se može stvoriti prečac – URL kodiranje,
dvostruko URL kodiranje, Unicode kodiranje i
UTF-8
Izvorni link: http://primjer/temp.cgi?home=index.htm
Napad: http://primjer/temp.cgi?home=temp.cgi

• U ovom primjeru, Web aplikacija će otkriti


izvorni kod temp.cgi datoteke jer se home
varijabla koristi za prikaz sadržaja u obliku
HTML dokumenta.
Predviđanje lokacije resursa
• „Predviđanje lokacije resursa je napadačka
tehnika koja se koristi kako bi se otkrili skriveni
sadržaji ili funkcionalnosti Web aplikacije”
• Tehnika se uglavnom svodi na grubo
pretraživanje sadržaja koji nije namijenjen za
javno prikazivanje. Najčešće mete su
privremene (temp), backup, konfiguracijske ili
obične datoteke
Primjer
• Slijepo pretraživanje određenih datoteka i
direktorija:
/admin/
/backup/
/logs/
/primjer.cgi

• Dodavanja ekstenzija već postojećim


datotekama, npr. test:
/test.asp
/test.bak
/test.tmp
6. Logičke ranjivosti
• „Logičke ranjivosti dozvoljavaju napadačima
korištenje napadačkih tehnika koje su
namijenjene narušavanju ili zloupotrebi
poslovnog toka (engl. workflow) Web
aplikacije.
• Pod poslovnim tokom ili aplikacijskom logikom
se podrazumijeva proceduralni tok koji se
koristi u Web aplikaciji kako bi se izvela
određena radnja.
Primjer
• proces za obnovu lozinke, registracija računa ili
online kupovina i sl.
• Web aplikacija zahtijeva od korisnika da točno
i precizno izvodi određeni proces u koracima
kako bi završio pojedinu radnju
• Napad - zaobići ili zlouporabiti ovaj proces
Zloupotreba funkcionalnosti
• „je napadačka tehnika koja se koristi resursima
i funkcionalnošću Web aplikacije kako bi se
iskoristio, prevario ili promijenio njen kontrolni
mehanizam”
• Ova vrsta napada se najčešće isprepliće s
ostalim vrstama napada npr. XSS
još nekoliko primjera:
• Korištenje tražilice kako bi se pristupilo
zaštićenim datotekama izvan osnovne mape
• Iskorištavanje datotečnog upload sustava
zamjenu kritičnih konfiguracijskih datoteka
• Izvođenje DoS napada nad sustavom prijave
korisnika koristeći ispravna korisnička imena i
loše lozinke kako bi se blokirao pristup
određenim korisnicima
Primjer
• “kolica za kupnju” (engl Shopping cart) - napadač je na neočekivani način
mogao izmijeniti ponašanje Web aplikacije mijenjajući vrijednost
skrivenog polja unutar forme koju koristi Web aplikacija
Uskraćivanje usluge
• „Uskraćivanje usluge ili Denial of Service (DoS)
napadi su napadačke tehnike čija je namjera
onemogućiti normalni rad Web aplikacije ili
korisnički pristup Web aplikaciji”
• Napadi prema aplikacijskom sloju
Neki od primjera DoS napada:
• DoS napad usmjeren prema korisniku. Napadač će se
učestalo pokušavati prijaviti na Web aplikaciju kao određeni
korisnik, namjerno koristeći krivu lozinku. Konačno, aplikacijski
autentifikacijski proces će “zaključati” pristup korisniku.
• DoS napad prema poslužitelju baze podataka. Napadač uz
pomoć SQL ubacivanja modificira bazu podataka na način da
sustav postane nestabilan (npr. obriše sve podatke).
• DoS napad prema Web poslužitelju. Napadač koristi napad
vezan uz prelijevanje spremnika kako bi srušio procese Web
poslužitelja i kako se sustavu ne bi moglo pristupiti određeno
vrijeme.
Napadi automatiziranim
procesima
• „Napadi automatiziranim procesima nastupaju
kada Web aplikacija omogući napadaču
izvođenje automatiziranog procesa koji bi se
inače po svojoj prirodi trebao ručno izvesti od
strane korisnika”
• Npr. automatizirani programi–roboti – prijava
tisuću korisničkih računa unutar par minuta ili
slanje tisuću poruka na forum
Narušavanje kontrole procesa
• „Narušavanje kontrole procesa nastupa kada
Web aplikacija dopusti napadaču zaobilaženje
ili promjenu uobičajnog kontrolnog toka
aplikacije.”
• Ova vrsta napada je česta ukoliko se korisnički
stanje ne provjerava unutar određenih
aplikacijskih procesa
Primjer
• Procesi u više koraka: obnova lozinke,
otvaranje korisničkog računa, on-line
kupovina, itd.
• Web aplikacija mora pratiti stanje korisnika
dok korisnik vrši radnje unutar njenog toka
procesa. Praćenje se najčešće vrši korištenjem
sjedničkog identifikatora ili skrivenih HTML
polja.
Primjer: On-line Web aplikacija za prodaju
(shopping cart). Svaki korisnik koji kupi
proizvod A će dobiti popust, dok za proizvod B
nema popusta. Korisnikova želja je da
dobije popust za proizvod B. Kontrola procesa
će se narušiti na sljedeći način:
1. Korisnik želi kupiti proizvod B s popustom, te
u kolica ubacuje proizvode A i B u
košaricu.
2. Korisnik ulazi u proces provjere gdje mu se
registira popust.
3. Korisnik se vraća natrag iz procesa provjere,
izbacuje proizvod A iz košarice.
4. Korisnik ponovno ulazi u proces provjere,
pritom zadržavajući popust ostvaren u
prijašnjem procesu provjere (s proizvodom A u
košarici) i prevarom postiže nižu
cijenu proizvoda B.
Temeljni zaštitni mehanizmi
• Neki od temeljnih zaštitnih mehanizama koji
su ugrađeni u većini Web aplikacija su:
1.kontrola korisničkog pristupa,
2.kontrola korisničkog unosa,
3.odgovor na napad na sigurnost Web
aplikacije i
4.održavanje Web aplikacije.
1. Kontrola korisničkog pristupa
• Kontrola korisničkog pristupa funkcijama i
podacima Web aplikacije potrebna je kako bi
se neautoriziranim korisnicima spriječio
pristup osjetljivim informacijama.
• Ovo je osnovni zaštitni mehanizam
• neautentificirani (anonimni) korisnici,
autentificirani korisnici i korisnici s
administratorskim pravima (administratori)
• Kontrola korisničkog pristupa u Web
aplikacijama ostvaruje se ugrađivanjem tri
osnovna zaštitna mehanizma, a to su:
1.autentikacija,
2.kontrola sjednice i
3.kontrola pristupa.

Izvor: Tomić, I: PENETRACIJSKO ISPITIVANJE SIGURNOSTI WEB


PRIMJENSKIH PROGRAMA, FER, 2009.
Autentikacija
• Autentifikacija korisnika koristi se kako bi se utvrdilo
da je korisnik stvarno onaj za kojeg se predstavlja da
je.
• standardno se provodi pomoću korisničkog imena i
lozinke
• Složenija autentifikacija od korisnika obično zahtjeva
još informacija, osim korisničkog imena i lozinke, i
autentifikacija se provodi u više koraka ili putem
pametnih kartica, klijentskih certifikata, uređaja kao
što su tokeni
Kontrola sjednice
• za svakog korisnika napravi se sjednica i
svakom korisniku se dodjeli jedinstveni
sjednički identifikator (engl. session ID)
• Sjednički identifikator je jedinstveni znakovni
niz pomoću kojeg Web aplikacija razlikuje
pojedinog korisnika. Sjedničke identifikatore
izdaje Web aplikacija, te se oni čuvaju i na
Web poslužitelju i kod korisnika - ima svoj
životni vijek trajanja
Kontrola pristupa
• Mehanizam kontrole pristupa mora moći
raspoznavati o kojem se tipu korisnika radi i
čemu sve pojedini tip korisnika smije i ne smije
pristupiti.
• Kontrola pristupa može se podijeliti u dvije
osnovne kategorije, a to su:
1.horizontalna kontrola pristupa i
2.vertikalna kontrola pristupa
• Horizontalnom kontrolom pristupa kontrolira
se da korisnici koji imaju ista prava mogu
pristupiti samo svom sadržaju, a ne i sadržaju
drugih korisnika s istim pravima – primjer web
aplikacije za elektroničku poštu
• Vertikalna kontrola pristupa omogućava da se
napravi razlika između korisnika s
administratorskim pravima i običnih korisnika.
• čest izvor ranjivosti
• Razlog nastanka ranjivosti je većinom radi loše
pretpostavke programera o tome kako će
korisnici koristiti aplikaciju, te izostavljanjem
ugradnje kontrole pristupa za neke dijelove
Web aplikacije
2. Kontrola korisničkog unosa
• za sigurnost Web aplikacije jako bitno na koji
način rukuje s korisničkim unosom
• Sav korisnički unos trebao bi se smatrati
nesigurnim i trebao bi proći kroz fazu
ispitivanja valjanosti prije korištenja unutar
Web aplikacije
Postoje dvije vrste korisničkog
unosa:
1. unos kod kojeg se od korisnika direktno traži da
unese neke podatke, kao što su npr. korisničko ime i
lozinka, popunjavanje raznih formi i sl.
2. podaci koje je Web aplikacija poslala korisniku i
očekuje od korisnika da će joj on te podatke u
sljedećem zahtjevu vratiti nazad. Pod te podatke
spadaju sjednički identifikatori, vrijednosti
spremljene u skrivenim poljima, razni identifikatori
potrebni za funkcioniranje aplikacije i sl.
• Postoji više pristupa koji se koriste kako bi se
kontrolirao korisnički unos i time spriječili
napadi
• Neki od pristupa rješavanja ovih problema su:
 odbacivanje poznatih loših unosa (engl. Reject
Known Bad),
 prihvaćanje poznatih dobrih unosa (engl. Accept
Known Good) i
 preoblikovanje korisničkog unosa (engl.
Sanitization).
Odbacivanje poznatih loših unosa
• koristi se lista korisničkih unosa za koje se
sigurno zna da su loši, tj. da mogu naštetiti
Web aplikaciji
• Ovakav pristup kontrole korisničkog unosa je
najmanje efikasan – npr. brzo zastarijevanje
liste poznatih loših unosa
Prihvaćanje poznatih dobrih unosa
• koristi se lista korisničkih unosa za koje se
sigurno zna da su bezopasni za Web aplikaciju.
Lista sadrži prihvatljive nizove znakova,
prihvatljive uzorke znakova ili se koristi skup
kriterija koji se podudaraju sa sigurnim
unosom. Mehanizam provjere radi tako da
propušta sve korisničke unose koji se
podudaraju s listom, a sve ostale unose
odbacuje
Preoblikovanje korisničkog unosa
• se koristi kada postoji potreba za prihvat
korisničkog unosa za koji se sa sigurnošću ne
može reći da je siguran. Umjesto odbacivanja
ovakvih korisničkih unosa oni se preoblikuju
tako da ne mogu imati nikakav negativan
utjecaj na Web aplikaciju - npr. jednostruki
navodnici mogu se deaktivirati prije obrade u
web aplikaciji
3. Odgovor na napad na sigurnost
Web aplikacije
• Mjere za obranu od napada obično uključuju
defenzivne i ofenzivne mjere:
kontrola grešaka,
vođenje kontrolnih zapisa,
obavještavanje administratora i
reakcija na napad.
Kontrola grešaka
• Web aplikacija mora biti u mogućnosti da na
prikladan način obradi neočekivane greške
tako da se u potpunosti oporavi od njih ili da
korisniku pošalje prikladnu poruku o grešci -
ne bi smjela vraćati i korisniku prikazivati
sistemski generirane greške
Vođenje kontrolnih zapisa (engl.
audit logs)
• da se točno vidi što se sve dogodilo tijekom
napada na Web aplikaciju
• dati uvid u sve što je napadač radio tijekom
napada (iskorištene ranjivosti, neautorizirani
pristup funkcijama i podacima, sve provedene
akcije i sl.).
• omogućiti ili olakšati otkrivanje stvarnog
identiteta napadača, kako bi ga se moglo
zakonski sankcionirati.
Obavještavanje administratora
• Ukoliko ih se pravodobno obavijesti,
administratori mogu reagirati u realnom
vremenu i spriječiti napad koji je u tijeku ili
smanjiti njegovo posljedice.
• Administratori mogu blokirati IP adrese s kojih
se provodi napad ili blokirati korisničke račune
koji su kompromitirani ili ih napadač koristi za
napad. U najgorem slučaju mogu ugasiti Web
aplikaciju
Reakcija na napad
• neke Web aplikacije ugrađuju mehanizam koji
u tom slučaju automatski reagira i izvodi niz
mjera kako bi zaustavio napadača.
• Neke od mjera su: sve sporije posluživanje
zahtjeva koje šalje napadač, prekidanje
napadačeve sjednice kako bi se morao
ponovno prijaviti na sustav nakon svakog
zahtjeva, blokiranje IP adrese s koje dolaze
zahtjevi i sl.
4. Održavanje Web aplikacije
• Za normalan rad Web aplikacije potrebno je
održavati sve njezine dijelove i funkcije, kao
što su: administracija korisnika, vođenje i
pristup kontrolnim zapisima, konfiguriranje
aplikacijskih funkcija, provođenje
dijagnostičkih kontrola i dr.
• dobro osigurati administratorski dio i sve
njegove funkcije od neautoriziranog pristupa i
pristup omogućiti samo administratorima

You might also like