Slijede razlike između dviju inačica stranice.
Starije izmjene na obje strane Starija izmjena Novija izmjena | Starija izmjena | ||
racfor_wiki:mrezna_forenzika:ranjivosti_web_aplikacija [2020/01/09 22:53] kfugosic [Vanjski XML entiteti (XXE)] |
racfor_wiki:mrezna_forenzika:ranjivosti_web_aplikacija [2024/12/05 12:24] (trenutno) |
||
---|---|---|---|
Redak 34: | Redak 34: | ||
===== Autentifikacija i upravljanje sjednicama (Broken Authentication) ===== | ===== Autentifikacija i upravljanje sjednicama (Broken Authentication) ===== | ||
- | Budući da HTTP protokol ne čuva stanje, podaci o sjednici ili korisniku moraju putovati u svakom zahtjevu što može predstavljati sigurnosni rizik. Također, postoje | + | Postoje |
Pod ranjivosti vezane za autentifikaciju ubraja se sljedeće: | Pod ranjivosti vezane za autentifikaciju ubraja se sljedeće: | ||
Redak 42: | Redak 42: | ||
- neotpornost na automatizirane napade (npr. credential stuffing)\\ | - neotpornost na automatizirane napade (npr. credential stuffing)\\ | ||
- slab ili nepostojeći oporavak lozinke\\ | - slab ili nepostojeći oporavak lozinke\\ | ||
- | - spremanje lozinke u čistom (eng. plain text) obliku ili slabim | + | - spremanje lozinke u čistom (eng. plain text) obliku ili slabim |
- nepostojeća višestruka autorizacija (eng. Multi-factor authentication) | - nepostojeća višestruka autorizacija (eng. Multi-factor authentication) | ||
Redak 55: | Redak 55: | ||
===== Nesigurno upravljanje osljetljivim podacima (Sensitive Data Exposure) ===== | ===== Nesigurno upravljanje osljetljivim podacima (Sensitive Data Exposure) ===== | ||
- | Šta je sve potrenbo osigurat, gdpr… | + | Ova ranjivost odnosi se na osjetljive podatke u prijenosu ili u pohranjenom obliku. Budući da HTTP protokol ne čuva stanje, podaci o sjednici ili korisniku moraju putovati u svakom zahtjevu što može predstavljati sigurnosni rizik. |
- | Ova ranjivost odnosi se na osjetljive podatke u prijenosu ili u pohranjemon obliku. | + | Razne web aplikacije raspolažu raznim osjetljivim podacima, poput lozinki, brojeva kreditnih kartica, zdravstvenim i osobnim podacima ili poslovnim tajnama. Regulativama poput GDPR-a (General Data Protection Regulation) pokušava se prisiliti |
- | Ako web aplikacija svoje podatke nije dobro osigurala, posljedice mogu biti katastrofalne, | + | Za početak, veoma je bitno da osjetljivi podaci ne putuju u nešifriranom obliku protokolima kao što su HTTP, SMTP i FTP. Nadalje, bitno je kako ih pohranjujemo. Osjetljive podatke potrebno je šifrirati i pritom obratiti pozornost da koristimo siguran algoritam šifriranja. Uz to, moramo paziti koji podaci su dostupni kojim korisnicima i onemogućiti da korisnici jednostavnim trikovima, na primjer izmjenom URL adrese ili ubacivanjem malicioznog koda kroz prostore za unos teksta ili datoteka, ili nekim kompliciranijim metodama dođu do podataka koji nisu njima namijenjeni. Također, potrebno je i provjeravati valjanost certifikata korisnika. |
+ | |||
+ | Ako web aplikacija svoje podatke nije dobro osigurala, posljedice mogu biti katastrofalne, | ||
{{ https:// | {{ https:// | ||
Redak 65: | Redak 67: | ||
Slika 3) Spam uzrokovan curenjem podataka | Slika 3) Spam uzrokovan curenjem podataka | ||
- | Preporuča se da na različitim mjestima koriste različite lozinke, te da se sumnjive stranice izbjegavaju. Stranice poput [[http:// | + | Preporučuje se da na različitim mjestima koriste različite lozinke |
Od 2017. godine ova se ranjivost nalazi na trećem mjestu OWASP Top 10 ljestvice. | Od 2017. godine ova se ranjivost nalazi na trećem mjestu OWASP Top 10 ljestvice. | ||
+ | |||
===== Vanjski XML entiteti (XXE) ===== | ===== Vanjski XML entiteti (XXE) ===== | ||
- | **XXE ** (XML External Entity), često nazivan i **XML umetanje** (eng. XML injection), je napad usmjeren na web aplikacije koje obrađuju XML tipove podataka.\ Napad je najlakše objasniti sljedećim primjerom gdje želimo dodati novi blog unos na nekoj web stranici: | + | **XXE ** (XML External Entity), često nazivan i **XML umetanje** (eng. XML injection), je napad usmjeren na web aplikacije koje obrađuju XML tipove podataka. Napad je najlakše objasniti sljedećim primjerom gdje želimo dodati novi blog unos na nekoj web stranici: |
< | < | ||
<?xml version=" | <?xml version=" | ||
Redak 86: | Redak 89: | ||
</ | </ | ||
- | Sada ćemo izmijeniti podatke koje šaljemo u XML formatu kako bismo pristupili zaštičenim podacima. Sljedeća XML poruka će sadržaj datoteke /etc/passwd prepisati u entitet (varijablu) xxe, te ih zatim ispisati umjesto naslova. | + | Sada ćemo izmijeniti podatke koje šaljemo u XML formatu kako bismo pristupili zaštićenim podacima. Sljedeća XML poruka će sadržaj datoteke /etc/passwd prepisati u entitet (varijablu) xxe, te ih zatim ispisati umjesto naslova. |
< | < | ||
Redak 98: | Redak 101: | ||
</ | </ | ||
- | Važno je obratiti pozornost na treću liniju u kojoj se definira vanjski entitet (eng. external entity), odnosno u kojoj se sadržaj datoteke /etc/passwd učitava u entitet xxe.\ Ovaj puta od stranice dobivamo odgovor: | + | Važno je obratiti pozornost na treću liniju u kojoj se definira vanjski entitet (eng. external entity), odnosno u kojoj se sadržaj datoteke /etc/passwd učitava u entitet xxe. Ovaj puta od stranice dobivamo odgovor: |
< | < | ||
- | Blog post sa naslovom root: | + | Blog post s naslovom root: |
daemon: | daemon: | ||
bin: | bin: | ||
Redak 123: | Redak 126: | ||
</ | </ | ||
- | Kako bi spriječili ovakve napade, potrebno je analizirati i validirati XML okumente | + | Kako bi spriječili ovakve napade, potrebno je analizirati i validirati XML dokumente |
OWASP " | OWASP " | ||
Redak 130: | Redak 133: | ||
===== Cross Site Scripting (XSS) ===== | ===== Cross Site Scripting (XSS) ===== | ||
- | Cross Site Scripting je jedan od poznatijih napada u kojem se iskorištava svojstvo da se određeni kod, pisan primjerice u Javascriptu ili HTML-u, izvršava u web browseru na računalu klijenta. Ciljevi ovakvog napada najčešće su krađa kolačića (eng. cookies) ili tokena sjednice (eng. session token) što je nužno za preuzimanje identiteta klijenta i korištenje istoga u štetne svrhe. Također, često je i umetanje sadržaja na napadnutu web stranicu, poput reklama, // | + | **Cross Site Scripting** je jedan od poznatijih napada u kojem se iskorištava svojstvo da se određeni kod, pisan primjerice u Javascriptu ili HTML-u, izvršava u web browseru na računalu klijenta. Ciljevi ovakvog napada najčešće su krađa kolačića (eng. cookies) ili tokena sjednice (eng. session token) što je nužno za preuzimanje identiteta klijenta i korištenje istoga u štetne svrhe. Također, često je i umetanje sadržaja na napadnutu web stranicu, poput reklama, // |
XSS napadi dijele se u dvije osnovne skupine: pohranjeni (eng. stored) i odbijeni (ili odraženi, eng. reflected). | XSS napadi dijele se u dvije osnovne skupine: pohranjeni (eng. stored) i odbijeni (ili odraženi, eng. reflected). | ||
- | **Pohranjeni **napadi su oni gdje se zlonamjerna skripta trajno pohranjuje na ciljne poslužitelje, | + | **Pohranjeni |
+ | < | ||
< | < | ||
document.location=' | document.location=' | ||
Redak 148: | Redak 152: | ||
</ | </ | ||
- | Korisnik vjerojatno neće uopće | + | Korisnik vjerojatno neće uopće |
- | **Odbijeni **napadi šalju se žrtvama drugim putem, poput e-pošte ili neke druge web stranice. Ako korisnik klikne na zlonamjernu vezu, ispuni i pošalje zlonamjeran obrazac ili pak samo posjeti zlonamjernu web stranicu, zlonamjeran kod putuje na ranjivu web stranicu, što odražava napad natrag u korisnikov preglednik. Preglednik izvršava kod jer je došao sa " | + | **Odbijeni |
< | < | ||
<a href=" | <a href=" | ||
Redak 159: | Redak 163: | ||
< | < | ||
" | " | ||
- | <a href=" | ||
<body onload=alert(document.cookie)> | <body onload=alert(document.cookie)> | ||
<b onmouseover=alert(document.cookie)> | <b onmouseover=alert(document.cookie)> | ||
Redak 168: | Redak 171: | ||
OWASP “šalabahter” za prevenciju XSS ranjivosti dostupan je na sljedećoj [[http:// | OWASP “šalabahter” za prevenciju XSS ranjivosti dostupan je na sljedećoj [[http:// | ||
+ | |||
===== Cross Site Request Forgery (CSRF) ===== | ===== Cross Site Request Forgery (CSRF) ===== | ||
- | CSRF je napad pri kojem se žrtva namami da pošalje naredbu ranjivoj web aplikaciji u kojoj je trenutno prijavljena. Ranjivost iskorištava svojstvo preglednika da automatski uključuju autentifikacijske podatke (npr. sjednicu, IP adresu) u svaki zahtjev, te da sjedište vjeruje pregledniku korisnika. Ovaj napad se još naziva i XSRF, slično XSS-u s kojim se često koristi zajedno. Na slici 4 prikazan je jednostavan obrazac za promjenu lozinke, a ispod slike pripadan HTML kod. | + | **CSRF **je napad pri kojem se žrtva namami da pošalje naredbu ranjivoj web aplikaciji u kojoj je trenutno prijavljena. Ranjivost iskorištava svojstvo preglednika da automatski uključuju autentifikacijske podatke (npr. sjednicu, IP adresu) u svaki zahtjev, te da sjedište vjeruje pregledniku korisnika. Ovaj napad se još naziva i **XSRF**, slično XSS-u s kojim se često koristi zajedno. Na slici 4 prikazan je jednostavan obrazac za promjenu lozinke, a ispod slike pripadan HTML kod. |
{{ https:// | {{ https:// | ||
Redak 194: | Redak 198: | ||
Ako korisnik na nju klikne, promjenit će svoj password u password123. Sada zamislimo da neka druga stranica nudi opciju slanja novca i kakve bi posljedice donesao ovakav propust u kojem napadač jednostavnim slanjem posebno složene poveznice može nekome ukrasti novac. | Ako korisnik na nju klikne, promjenit će svoj password u password123. Sada zamislimo da neka druga stranica nudi opciju slanja novca i kakve bi posljedice donesao ovakav propust u kojem napadač jednostavnim slanjem posebno složene poveznice može nekome ukrasti novac. | ||
- | Ova ranjivost od 2017. godine više ne spada u OWASP Top 10, a razni okviri poput Spring Security-a imaju uključenu zaštitu protiv istoga u inicijalnim postavkama. Zaštita se sastoji od CSRF tokena odnosno jedinstvene, | + | Ova ranjivost od 2017. godine više ne spada u OWASP Top 10, a razni okviri poput Spring Security-a imaju uključenu zaštitu protiv istoga u inicijalnim postavkama. Zaštita se sastoji od **CSRF tokena** odnosno jedinstvene, |
< | < | ||
<input type=" | <input type=" | ||
</ | </ | ||
- | Ovo je rješenje je dobro, no i dalje potencijalno ranjivo XSS napadom.\ | + | Ovo je rješenje je dobro, no i dalje potencijalno ranjivo XSS napadom. |
OWASP “šalabahter” za prevenciju CSRF ranjivosti dostupan je na sljedećoj [[https:// | OWASP “šalabahter” za prevenciju CSRF ranjivosti dostupan je na sljedećoj [[https:// | ||