Professional Documents
Culture Documents
Literatura:
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):
• 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
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
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.”
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>
<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>
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