SIGURNOST WEB APLIKACIJA Literatura The Web Application Hackers
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/P 12_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/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 (My. Space) Banking (Citibank) Web search (Google) Auctions (e. Bay) 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. Java. Script) • 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, Mac. OS, 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, Java. Script, CGI, Cold. Fusion, JSP/Java, Perl, Python, i dr. ) • Za podatkovni sloj koriste se sustavi za upravljanje bazama podataka (npr. SQLserver, My. SQL, DB 2, 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? Saa. S?
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%20 Classification
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. 2. 3. 4. 5. 6. Napadi vezani uz autentifikaciju Napadi vezani uz autorizaciju Napadi na klijentsku stranu Napadi vezani uz izvršavanje naredbi Otkrivanje povjerljivih informacija 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 imaš” • “neš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_%28 Fixation%29_Attacks_and_Protections. OWASP-Raul. Siles_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. html /products /sales. . . index. html login. html. . . https: //[SERVER URL]/admin. 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) posjećenih stranica dođe do određenih sadržaja za koje mu inače trebaju prava prvog korisnika. Slika: Internet caffe, Izvor: yugatech. com
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"> Pogledati izvor: http: //projects. webappsec. org/w/pa ge/13246917/Content%20 Spoofing <FRAME NAME="pr_content" src=" http: //attacker. example/spoofed_press_release. html"> </FRAMESET> </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 Java. Script skriptnog jezika, ali također i VBScript, Active. X, 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, Webmail 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=%3 Bcat%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 Do. S 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 (Do. S) 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 Do. S napada: • Do. S 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. • Do. S 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). • Do. S 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 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: q odbacivanje poznatih loših unosa (engl. Reject Known Bad), q prihvaćanje poznatih dobrih unosa (engl. Accept Known Good) i q 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: qkontrola grešaka, qvođenje kontrolnih zapisa, qobavještavanje administratora i qreakcija 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
- Slides: 120