csrf
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| csrf [2023/12/04 17:43] – lss | csrf [2026/06/16 15:37] (current) – Promjena sadržaja primjera, velike prepravke i prerada mitigacije mbunic | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====CSRF===== | ====CSRF===== | ||
| - | CSRF (Cross site request forgery) je vrsta napada koja iskorištava ranjivost nastalu zbog ne razlikovanja | + | **CSRF** (engl. // |
| - | Najjednostavniji | + | Jednostavan |
| - | Zamislimo da se na adresi < | + | Na adresi < |
| < | < | ||
| - | šalje količinu novaca u parametru //amount// s računa korisnika koji je napravio taj zahtjev na račun korisnika s korisničkim računom // | ||
| - | Napadač može prilagoditi parametre //amount// i //to// u URL-u i poslati takav link žrtvi. Klikom na link, žrtva bi poslala novce napadaču. | + | Ovim zahtjevom se izvršava transakcija. U parametru //amount// se definira količina novaca s računa korisnika koji je poslao zahtjev na račun korisnika s korisničkim računom navedenim u parametru // |
| + | |||
| + | Napadač može prilagoditi parametre //amount// i //to// u URL-u i poslati takav link žrtvi. Klikom na link, ako je žrtva aktivno prijavljena u bankarsku aplikaciju i ima aktivnu sesiju, žrtva bi poslala novce napadaču. | ||
| + | |||
| + | Napadač može na svojoj zlonamjernoj stranici napisati JavaScript kod koji se izvršava automatski posjetom stranice i u pozadini šalje ovaj zahtjev. Web preglednik žrtve automatski dodaje kolačić sa sesijom za domenu stranice banke uz zahtjev, ako žrtva ima aktivnu sesiju na stranici banke te se transakcija izvršava u žrtvinom kontekstu. Ovo je primjer CSRF napada. | ||
| Napad bi potencijalno bio moguć i da funkcionalnost koristi POST zahtjev. Pretpostavimo da bankarska aplikacija koristi formu sljedećeg izgleda: | Napad bi potencijalno bio moguć i da funkcionalnost koristi POST zahtjev. Pretpostavimo da bankarska aplikacija koristi formu sljedećeg izgleda: | ||
| - | < | + | < |
| <form action="/ | <form action="/ | ||
| Line 20: | Line 24: | ||
| <input type=" | <input type=" | ||
| <label for=" | <label for=" | ||
| - | <input type=" | + | <input type=" |
| <input type=" | <input type=" | ||
| </ | </ | ||
| Line 27: | Line 31: | ||
| </ | </ | ||
| - | Zatim kreira svoju lažnu stranicu te na njoj postavi sljedeći obrazac: | + | Zatim napadač |
| - | < | + | |
| + | < | ||
| <form action=" | <form action=" | ||
| <input type=" | <input type=" | ||
| Line 38: | Line 43: | ||
| Kada bi žrtva posjetila napadačevu stranicu i pokušala se registrirati klikom na gumb REGISTER, poslala bi zahtjev POST prema < | Kada bi žrtva posjetila napadačevu stranicu i pokušala se registrirati klikom na gumb REGISTER, poslala bi zahtjev POST prema < | ||
| - | No, slanje | + | Slanje |
| - | < | + | < |
| <body onload=" | <body onload=" | ||
| < | < | ||
| Line 48: | Line 53: | ||
| </ | </ | ||
| - | Ako je žrtva u trenutku kada posjeti napadačevu stranicu prijavljena u bankarsku aplikaciju i ako je ta aplikacija ranjiva na CSRF napade, novac bi se sa žrtvinog računa | + | Ako je žrtva u trenutku kada posjeti napadačevu stranicu prijavljena u bankarsku aplikaciju i ako je ta aplikacija ranjiva na CSRF napade, novac bi se i u ovom slučaju prebacio |
| - | Osnovni razlog za CSRF napade je da web aplikacija nema implementirane mehanizme po kojima bi mogla razlikovati legitimne od nelegitimnih zahtjeva. | + | ===Prevencija |
| - | Najbolja | + | Osnovni razlog ranjivosti na CSRF napade je nedostatak mehanizma |
| - | u sjednicu korisnika svakim novim zahtjevom i imaju kratak period trajanja. Unutar svakog novog zahtjeva | + | |
| - | __**Primjer**__ - **Zadatak s Hacknite platforme -" | + | Uobičajena zaštita od ovakvih napada je korištenje CSRF tokena. To su nasumično generirane vrijednosti čija se jedna kopija vrijednosti šalje korisniku uz odgovor poslužitelja, |
| - | < | + | Unutar POST zahtjeva klijent |
| - | Mario je napravio stranicu preko koje si korisnici | + | |
| - | korisničkim imenom " | + | Alternativno, |
| - | korisnike na stranici, svaka poveznica koja se pošalje je otvorena. | + | Ako su CSRF tokeni ispravno implementirani, napadač ne može pogoditi niti saznati vrijednost CSRF tokena, pa zato ne može uspješno lažirati zahtjev korisnika. CSRF tokeni se uglavnom ne koriste u [[HTTP]] GET zahtjevima zbog čega je važno da GET zahtjevi ne mijenjaju stanje u aplikaciji. |
| - | </ | + | |
csrf.1701711837.txt.gz · Last modified: 2025/12/01 11:40 (external edit)