From bba147afb145dd9e618e7402a0e4c0d5a348d345 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 4 Feb 2025 22:43:43 +0000 Subject: [PATCH] Translated ['src/pentesting-web/xss-cross-site-scripting/README.md'] to --- .../xss-cross-site-scripting/README.md | 69 ++++++++++--------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/src/pentesting-web/xss-cross-site-scripting/README.md b/src/pentesting-web/xss-cross-site-scripting/README.md index 026c3bed7..09fc1940b 100644 --- a/src/pentesting-web/xss-cross-site-scripting/README.md +++ b/src/pentesting-web/xss-cross-site-scripting/README.md @@ -45,7 +45,7 @@ Da biste uspešno iskoristili XSS, prva stvar koju treba da pronađete je **vred Kada pokušavate da iskoristite XSS, prva stvar koju treba da znate je **gde se vaš unos odražava**. U zavisnosti od konteksta, moći ćete da izvršite proizvoljan JS kod na različite načine. -### Sirovi HTML +### Sirov HTML Ako se vaš unos **odražava na sirovom HTML** stranici, moraćete da zloupotrebite neki **HTML tag** kako biste izvršili JS kod: ``\*\***\***\*ili \*\*\*\*\*\***`--!>`\*\*_ +_**Napomena: HTML komentar se može zatvoriti koristeći\*\*\*\*\*\***\***\*`-->`\*\***\***\*ili \*\*\*\*\*\***`--!>`\*\*_ U ovom slučaju i ako se ne koristi crna/bela lista, mogli biste koristiti payload-e kao: ```html @@ -170,7 +170,7 @@ Idite na [**https://portswigger.net/web-security/cross-site-scripting/cheat-shee ### Prilagođeni tagovi -Ako niste pronašli nijedan validan HTML tag, možete pokušati da **kreirate prilagođeni tag** i izvršite JS kod sa `onfocus` atributom. U XSS zahtevu, potrebno je da završite URL sa `#` kako biste učinili da stranica **fokusira na taj objekat** i **izvrši** kod: +Ako niste pronašli nijedan validan HTML tag, možete pokušati da **kreirate prilagođeni tag** i izvršite JS kod sa `onfocus` atributom. U XSS zahtevu, potrebno je da završite URL sa `#` kako biste naterali stranicu da **fokusira na taj objekat** i **izvrši** kod: ``` /?search=#x ``` @@ -267,7 +267,7 @@ Ako **ne možete da pobegnete iz taga**, možete kreirati nove atribute unutar t ``` ### Unutar atributa -Čak i ako **ne možete da pobegnete iz atributa** (`"` se kodira ili briše), u zavisnosti od **tog atributa** u kojem se vaša vrednost odražava **da li kontrolišete celu vrednost ili samo deo** moći ćete da ga zloupotrebite. Na **primer**, ako kontrolišete događaj kao što je `onclick=`, moći ćete da ga naterate da izvrši proizvoljan kod kada se klikne.\ +Čak i ako **ne možete da pobegnete iz atributa** (`"` se kodira ili briše), u zavisnosti od **tog atributa** u kojem se vaša vrednost odražava **ako kontrolišete celu vrednost ili samo deo** moći ćete da je zloupotrebite. Na **primer**, ako kontrolišete događaj kao što je `onclick=`, moći ćete da ga naterate da izvrši proizvoljan kod kada se klikne.\ Još jedan zanimljiv **primer** je atribut `href`, gde možete koristiti `javascript:` protokol za izvršavanje proizvoljnog koda: **`href="javascript:alert(1)"`** **Zaobilaženje unutar događaja koristeći HTML kodiranje/URL kodiranje** @@ -351,17 +351,17 @@ _**U ovom slučaju, HTML kodiranje i trik sa Unicode kodiranjem iz prethodnog od ```javascript ``` -Pored toga, postoji još jedan **lepi trik** za ove slučajeve: **Čak i ako je vaš unos unutar `javascript:...` URL kodiran, biće URL dekodiran pre nego što se izvrši.** Dakle, ako treba da **izbegnete** iz **niza** koristeći **jednostavni navodnik** i vidite da **je URL kodiran**, zapamtite da **nije važno,** biće **tumačeno** kao **jednostavni navodnik** tokom **vremena izvršenja.** +Pored toga, postoji još jedan **lepi trik** za ove slučajeve: **Čak i ako je vaš unos unutar `javascript:...` URL kodiran, biće URL dekodiran pre nego što se izvrši.** Dakle, ako treba da **izbegnete** iz **niza** koristeći **jednu navodnu**, i vidite da se **URL kodira**, zapamtite da **to nije važno,** biće **tumačeno** kao **jedna navodna** tokom **vremena izvršenja.** ```javascript '-alert(1)-' %27-alert(1)-%27 ``` -Napomena da ako pokušate da **koristite oba** `URLencode + HTMLencode` u bilo kom redosledu da kodirate **payload**, to **neće** **raditi**, ali možete **mešati ih unutar payload-a**. +Napomena da ako pokušate da **koristite oba** `URLencode + HTMLencode` u bilo kom redosledu za kodiranje **payload-a**, to **neće** **raditi**, ali možete **mešati ih unutar payload-a**. **Korišćenje Hex i Octal kodiranja sa `javascript:`** -Možete koristiti **Hex** i **Octal kodiranje** unutar `src` atributa `iframe` (barem) da deklarirate **HTML tagove za izvršavanje JS**: +Možete koristiti **Hex** i **Octal kodiranje** unutar `src` atributa `iframe` (barem) da deklarisete **HTML tagove za izvršavanje JS**: ```javascript //Encoded: // This WORKS @@ -373,7 +373,7 @@ Možete koristiti **Hex** i **Octal kodiranje** unutar `src` atributa `iframe` ( ``` -### Obrnuto navođenje taba +### Obrnuto nabbing kartica ```javascript //No safari @@ -401,7 +401,7 @@ Firefox: %09 %20 %28 %2C %3B Opera: %09 %20 %2C %3B Android: %09 %20 %28 %2C %3B ``` -### XSS u "neiskoristivim tagovima" (skriveni unos, link, kanonski, meta) +### XSS u "Neiskoristivim tagovima" (skriveni unos, link, kanonski, meta) Iz [**ovde**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **sada je moguće zloupotrebiti skrivene unose sa:** ```html @@ -422,7 +422,7 @@ onbeforetoggle="alert(2)" />
Newsletter popup
``` -Iz [**ovde**](https://portswigger.net/research/xss-in-hidden-input-fields): Možete izvršiti **XSS payload unutar skrivenog atributa**, pod uslovom da možete **uveriti** **žrtvu** da pritisne **kombinaciju tastera**. Na Firefox Windows/Linux kombinacija tastera je **ALT+SHIFT+X**, a na OS X je **CTRL+ALT+X**. Možete odrediti drugačiju kombinaciju tastera koristeći drugi taster u atributu pristupa. Evo vektora: +Iz [**ovde**](https://portswigger.net/research/xss-in-hidden-input-fields): Možete izvršiti **XSS payload unutar skrivenog atributa**, pod uslovom da možete **ubediti** **žrtvu** da pritisne **kombinaciju tastera**. Na Firefox Windows/Linux kombinacija tastera je **ALT+SHIFT+X**, a na OS X je **CTRL+ALT+X**. Možete odrediti drugačiju kombinaciju tastera koristeći drugi taster u atributu pristupa. Evo vektora: ```html ``` @@ -430,7 +430,7 @@ Iz [**ovde**](https://portswigger.net/research/xss-in-hidden-input-fields): Mož ### Obilaženje crne liste -Nekoliko trikova sa korišćenjem različitih kodiranja je već otkriveno u ovom odeljku. Vratite se da naučite gde možete koristiti: +Nekoliko trikova sa korišćenjem različitih kodiranja je već otkriveno u ovom odeljku. Vratite se **da naučite gde možete koristiti:** - **HTML kodiranje (HTML tagovi)** - **Unicode kodiranje (može biti validan JS kod):** `\u0061lert(1)` @@ -452,7 +452,7 @@ Ako ste pronašli **XSS u veoma malom delu** veba koji zahteva neku vrstu intera Na primer, mogli biste dodati neki stil u element kao što je: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5` -Ali, ako WAF filtrira stil atribut, možete koristiti CSS Styling Gadgets, tako da ako pronađete, na primer +Ali, ako WAF filtrira atribut stila, možete koristiti CSS Styling Gadgets, tako da ako pronađete, na primer > .test {display:block; color: blue; width: 100%\} @@ -468,15 +468,15 @@ Ovaj trik je preuzet sa [https://medium.com/@skavans\_/improving-the-impact-of-a ## Umetanje unutar JavaScript koda -U ovim slučajevima vaš **ulaz** će biti **reflektovan unutar JS koda** `.js` fajla ili između `` tagova ili između HTML događaja koji mogu izvršiti JS kod ili između atributa koji prihvataju `javascript:` protokol. +U ovom slučaju, vaš **ulaz** će biti **reflektovan unutar JS koda** `.js` fajla ili između `` tagova ili između HTML događaja koji mogu izvršiti JS kod ili između atributa koji prihvataju `javascript:` protokol. ### Izbegavanje \` lako možete **izbeći zatvaranje `` lako možete **izbeći zatvaranje ` ``` -Napomena da u ovom primeru **nismo čak ni zatvorili jednostruki navodnik**. To je zato što **HTML parsiranje prvo vrši pregledač**, što uključuje identifikaciju elemenata stranice, uključujući blokove skripti. Parsiranje JavaScript-a da bi se razumele i izvršile ugrađene skripte se vrši tek kasnije. +Napomena da u ovom primeru **nismo čak ni zatvorili jednostavni navodnik**. To je zato što **HTML parsiranje prvo vrši pregledač**, što uključuje identifikaciju elemenata stranice, uključujući blokove skripti. Parsiranje JavaScript-a za razumevanje i izvršavanje ugrađenih skripti se vrši tek kasnije. ### Unutar JS koda @@ -488,7 +488,7 @@ Ako se `<>` sanitizuju, još uvek možete **izbeći string** gde se vaš unos ** ``` ### Template literals \`\` -Da biste konstruisali **nizove** osim jednostrukih i dvostrukih navodnika, JS takođe prihvata **backticks** **` `` `**. Ovo je poznato kao template literals jer omogućava **ugrađivanje JS izraza** koristeći `${ ... }` sintaksu.\ +Da biste konstruisali **nizove** pored jednostrukih i dvostrukih navodnika, JS takođe prihvata **backticks** **` `` `**. Ovo je poznato kao template literals jer omogućava **ugrađivanje JS izraza** koristeći `${ ... }` sintaksu.\ Stoga, ako primetite da se vaš unos **reflektuje** unutar JS niza koji koristi backticks, možete zloupotrebiti sintaksu `${ ... }` da izvršite **arbitrarni JS kod**: Ovo se može **zloupotrebiti** koristeći: @@ -510,7 +510,7 @@ loop``