diff --git a/src/pentesting-web/xss-cross-site-scripting/README.md b/src/pentesting-web/xss-cross-site-scripting/README.md
index 2b614ae04..8036f85fd 100644
--- a/src/pentesting-web/xss-cross-site-scripting/README.md
+++ b/src/pentesting-web/xss-cross-site-scripting/README.md
@@ -4,32 +4,33 @@
## Metodologia
-1. Controlla se **qualunque valore tu controlli** (_parametri_, _percorso_, _intestazioni_?, _cookie_?) viene **riflesso** nell'HTML o **utilizzato** dal codice **JS**.
-2. **Trova il contesto** in cui è riflesso/utilizzato.
-3. Se **riflesso**
-1. Controlla **quali simboli puoi usare** e a seconda di ciò, prepara il payload:
-1. In **HTML grezzo**:
+1. Verifica se **qualsiasi valore che controlli** (_parameters_, _path_, _headers_?, _cookies_?) viene **riflesso** nell'HTML o **utilizzato** da codice **JS**.
+2. **Individua il contesto** in cui viene riflesso/utilizzato.
+3. Se è **riflesso**
+1. Verifica **quali simboli puoi usare** e, in base a quelli, prepara il payload:
+1. In **raw HTML**:
1. Puoi creare nuovi tag HTML?
2. Puoi usare eventi o attributi che supportano il protocollo `javascript:`?
3. Puoi bypassare le protezioni?
-4. Il contenuto HTML viene interpretato da qualche motore JS lato client (_AngularJS_, _VueJS_, _Mavo_...), potresti abusare di un [**Client Side Template Injection**](../client-side-template-injection-csti.md).
-5. Se non puoi creare tag HTML che eseguono codice JS, potresti abusare di un [**Dangling Markup - HTML scriptless injection**](../dangling-markup-html-scriptless-injection/index.html)?
+4. Il contenuto HTML viene interpretato da qualche motore JS client side (_AngularJS_, _VueJS_, _Mavo_...)? Potresti sfruttare una [**Client Side Template Injection**](../client-side-template-injection-csti.md).
+5. Se non puoi creare tag HTML che eseguono codice JS, puoi sfruttare una [**Dangling Markup - HTML scriptless injection**](../dangling-markup-html-scriptless-injection/index.html)?
2. All'interno di un **tag HTML**:
-1. Puoi uscire nel contesto HTML grezzo?
+1. Puoi uscire al contesto raw HTML?
2. Puoi creare nuovi eventi/attributi per eseguire codice JS?
3. L'attributo in cui sei intrappolato supporta l'esecuzione di JS?
4. Puoi bypassare le protezioni?
3. All'interno del **codice JavaScript**:
-1. Puoi sfuggire al tag ``** di una pagina HTML, all'interno di un file `.js` o all'interno di un attributo utilizzando il protocollo **`javascript:`**:
+In questo caso il tuo input viene riflesso tra i tag **``** di una pagina HTML, all'interno di un file `.js` o in un attributo che usa il protocollo **`javascript:`**:
-- Se riflesso tra i tag **``**, anche se il tuo input è all'interno di qualsiasi tipo di virgolette, puoi provare a iniettare `` ed uscire da questo contesto. Questo funziona perché il **browser prima analizzerà i tag HTML** e poi il contenuto, quindi non si accorgerà che il tuo tag iniettato `` è all'interno del codice HTML.
-- Se riflesso **all'interno di una stringa JS** e l'ultimo trucco non funziona, dovresti **uscire** dalla stringa, **eseguire** il tuo codice e **ricostruire** il codice JS (se c'è un errore, non verrà eseguito):
+- Se riflesso tra **``** tag, anche se il tuo input è all'interno di qualsiasi tipo di apici, puoi provare a iniettare `` e uscire da questo contesto. Questo funziona perché il **browser analizzerà prima i tag HTML** e poi il contenuto, quindi non noterà che il tag `` che hai iniettato è dentro il codice HTML.
+- Se riflesso **inside a JS string** e l'ultimo trucco non funziona, dovrai **uscire** dalla stringa, **eseguire** il tuo codice e **ricostruire** il codice JS (se c'è qualche errore, non verrà eseguito:
- `'-alert(1)-'`
- `';-alert(1)//`
- `\';alert(1)//`
-- Se riflesso all'interno di template literals puoi **inserire espressioni JS** utilizzando la sintassi `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
-- **La codifica Unicode** funziona per scrivere **codice javascript valido**:
+- Se riflesso all'interno dei template literals puoi **inserire espressioni JS** usando la sintassi `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
+- **Unicode encode** funziona per scrivere **valid javascript code**:
```javascript
alert(1)
alert(1)
@@ -85,8 +86,8 @@ alert(1)
```
#### Javascript Hoisting
-Javascript Hoisting si riferisce all'opportunità di **dichiarare funzioni, variabili o classi dopo che sono state utilizzate, in modo da poter abusare di scenari in cui un XSS utilizza variabili o funzioni non dichiarate.**\
-**Controlla la seguente pagina per ulteriori informazioni:**
+Javascript Hoisting fa riferimento alla possibilità di **dichiarare functions, variables or classes dopo che sono state usate in modo da poter sfruttare scenari dove una XSS sta usando variabili o funzioni non dichiarate.**\
+**Controlla la pagina seguente per più info:**
{{#ref}}
@@ -95,19 +96,19 @@ js-hoisting.md
### Javascript Function
-Diverse pagine web hanno endpoint che **accettano come parametro il nome della funzione da eseguire**. Un esempio comune da vedere nel mondo reale è qualcosa come: `?callback=callbackFunc`.
+Diverse pagine web hanno endpoint che **accept as parameter the name of the function to execute**. Un esempio comune che si vede nel mondo reale è qualcosa come: `?callback=callbackFunc`.
-Un buon modo per scoprire se qualcosa fornito direttamente dall'utente sta cercando di essere eseguito è **modificare il valore del parametro** (ad esempio in 'Vulnerable') e cercare nella console errori come:
+Un buon modo per scoprire se qualcosa fornito direttamente dall'utente sta cercando di essere eseguito è **modificare il valore del param** (per esempio in 'Vulnerable') e guardare nella console errori come:
.png>)
-Nel caso sia vulnerabile, potresti essere in grado di **attivare un alert** semplicemente inviando il valore: **`?callback=alert(1)`**. Tuttavia, è molto comune che questi endpoint **validino il contenuto** per consentire solo lettere, numeri, punti e underscore (**`[\w\._]`**).
+Se è vulnerabile, potresti essere in grado di **trigger an alert** semplicemente inviando il valore: **`?callback=alert(1)`**. Tuttavia, è molto comune che questi endpoints **validate the content** per consentire solo lettere, numeri, punti e underscore (**`[\w\._]`**).
-Tuttavia, anche con quella limitazione è ancora possibile eseguire alcune azioni. Questo perché puoi usare quei caratteri validi per **accedere a qualsiasi elemento nel DOM**:
+Tuttavia, anche con quella limitazione è ancora possibile eseguire alcune azioni. Questo perché puoi usare quei caratteri validi per **access any element in the DOM**:
.png>)
-Alcune funzioni utili per questo:
+Alcune funzioni utili a tal fine:
```
firstElementChild
lastElementChild
@@ -115,11 +116,11 @@ nextElementSibiling
lastElementSibiling
parentElement
```
-Puoi anche provare a **attivare funzioni Javascript** direttamente: `obj.sales.delOrders`.
+Puoi anche provare ad **attivare funzioni Javascript** direttamente: `obj.sales.delOrders`.
-Tuttavia, di solito gli endpoint che eseguono la funzione indicata sono endpoint senza molto DOM interessante, **altre pagine nella stessa origine** avranno un **DOM più interessante** per eseguire più azioni.
+Tuttavia, di solito gli endpoint che eseguono la funzione indicata sono endpoint senza un DOM molto interessante, **altre pagine nella stessa origin** avranno un **DOM più interessante** per eseguire più azioni.
-Pertanto, per **sfruttare questa vulnerabilità in un DOM diverso** è stata sviluppata l'esploitazione **Same Origin Method Execution (SOME)**:
+Pertanto, per **abusare di questa vulnerabilità in un DOM diverso** è stato sviluppato lo sfruttamento **Same Origin Method Execution (SOME)**:
{{#ref}}
@@ -128,7 +129,7 @@ some-same-origin-method-execution.md
### DOM
-C'è **codice JS** che utilizza **in modo non sicuro** alcuni **dati controllati da un attaccante** come `location.href`. Un attaccante potrebbe sfruttare questo per eseguire codice JS arbitrario.
+Esiste del **JS code** che utilizza in modo **non sicuro** alcuni **dati controllati da un attacker** come `location.href`. Un attacker potrebbe abusarne per eseguire codice JS arbitrario.
{{#ref}}
@@ -137,7 +138,7 @@ dom-xss.md
### **Universal XSS**
-Questi tipi di XSS possono essere trovati **ovunque**. Non dipendono solo dall'exploitation client di un'applicazione web ma da **qualsiasi** **contesto**. Questi tipi di **esecuzione arbitraria di JavaScript** possono persino essere sfruttati per ottenere **RCE**, **leggere** **file** **arbitrari** nei client e nei server, e altro ancora.\
+Questo tipo di XSS può essere trovato **ovunque**. Non dipendono soltanto dall'exploitation lato client di un'applicazione web ma da **qualsiasi** **contesto**. Questo tipo di **arbitrary JavaScript execution** può perfino essere abusato per ottenere **RCE**, **leggere** **file** **arbitrari** nei client e nei server, e altro ancora.\
Alcuni **esempi**:
@@ -154,13 +155,11 @@ server-side-xss-dynamic-pdf.md
.jpg>)
-## Iniettare all'interno di HTML raw
+## Iniezione all'interno di HTML grezzo
-Quando il tuo input è riflesso **all'interno della pagina HTML** o puoi sfuggire e iniettare codice HTML in questo contesto, la **prima** cosa che devi fare è controllare se puoi abusare di `<` per creare nuovi tag: prova semplicemente a **riflettere** quel **carattere** e controlla se viene **HTML codificato** o **eliminato** o se è **riflesso senza modifiche**. **Solo nell'ultimo caso sarai in grado di sfruttare questo caso**.\
-Per questi casi, tieni anche presente [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
-_**Nota: Un commento HTML può essere chiuso usando\*\***\***\*`-->`\*\***\***\*o \*\***`--!>`\*\*_
+Quando il tuo input viene riflesso **all'interno della pagina HTML** o puoi eseguire escape e iniettare codice HTML in questo contesto, la **prima** cosa che devi fare è controllare se puoi abusare di `<` per creare nuovi tag: prova semplicemente a **riflettere** quel **carattere** e verifica se viene **codificato in HTML** o **eliminato** oppure se viene **riflesso senza modifiche**. **Solo nell'ultimo caso riuscirai a sfruttare questa situazione**.\ Per questi casi tieni anche a mente [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\ _**Nota: Un commento HTML può essere chiuso usando\*\***\***\*`-->`\*\***\***\*o \*\***`--!>`\*\*_
-In questo caso e se non viene utilizzato alcun black/whitelisting, potresti usare payload come:
+In questo caso, e se non viene utilizzato alcun black/whitelisting, potresti usare payload come:
```html
` o tra eventi HTML che possono eseguire codice JS o tra attributi che accettano il protocollo `javascript:`.
+In questi casi il tuo **input** sarà **riflesso all'interno del codice JS** di un file `.js` o tra i tag `` o in eventi HTML che possono eseguire codice JS o in attributi che accettano il protocollo `javascript:`.
-### Escape del tag \` potresti facilmente **uscire chiudendo il tag `` puoi facilmente **escape della chiusura del tag `
```
-Nota che in questo esempio **non abbiamo nemmeno chiuso l'apostrofo**. Questo perché **l'analisi HTML viene eseguita prima dal browser**, che implica l'identificazione degli elementi della pagina, inclusi i blocchi di script. L'analisi di JavaScript per comprendere ed eseguire gli script incorporati viene effettuata solo successivamente.
+Nota che in questo esempio **non abbiamo nemmeno chiuso l'apice singolo**. Questo perché **il parsing HTML viene eseguito prima dal browser**, che comporta l'identificazione degli elementi della pagina, inclusi i blocchi di script. Il parsing del JavaScript per comprendere ed eseguire gli script incorporati viene effettuato solo in seguito.
-### Dentro il codice JS
+### All'interno del codice JS
-Se `<>` vengono sanificati, puoi comunque **eseguire l'escape della stringa** dove il tuo input è **situato** e **eseguire JS arbitrario**. È importante **correggere la sintassi JS**, perché se ci sono errori, il codice JS non verrà eseguito:
+Se `<>` vengono sanitizzati puoi comunque **escape the string** dove il tuo input è **posizionato** e **execute arbitrary JS**. È importante **fix JS syntax**, perché se ci sono errori, il codice JS non verrà eseguito:
```
'-alert(document.domain)-'
';alert(document.domain)//
\';alert(document.domain)//
```
-### Template literals \`\`
+#### JS-in-JS string break → inject → repair pattern
-Per costruire **stringhe** oltre alle virgolette singole e doppie, JS accetta anche i **backticks** **` `` `**. Questo è noto come template literals poiché consentono di **incorporare espressioni JS** utilizzando la sintassi `${ ... }`.\
-Pertanto, se scopri che il tuo input viene **riflesso** all'interno di una stringa JS che utilizza i backticks, puoi abusare della sintassi `${ ... }` per eseguire **codice JS arbitrario**:
+Quando l'input dell'utente si trova all'interno di una stringa JavaScript quotata (es., server-side echo dentro uno script inline), puoi terminare la stringa, iniettare codice e riparare la sintassi per mantenere il parsing valido. Scheletro generico:
+```
+" // end original string
+; // safely terminate the statement
+ // attacker-controlled JS
+; a = " // repair and resume expected string/statement
+```
+Esempio di pattern URL quando il parametro vulnerabile viene riflesso in una stringa JS:
+```
+?param=test";;a="
+```
+Questo esegue JS controllato dall'attaccante senza la necessità di toccare il contesto HTML (puro JS-in-JS). Combinalo con i blacklist bypasses qui sotto quando i filtri bloccano parole chiave.
-Questo può essere **abusato** utilizzando:
+### Template literals ``
+
+Per creare **stringhe**, oltre alle virgolette singole e doppie, JS accetta anche i **backticks** **` `` `** . Questo è noto come template literals poiché permettono di **inserire espressioni JS** usando la sintassi `${ ... }`.\
+Quindi, se scopri che il tuo input viene **riflesso** all'interno di una stringa JS che usa i backticks, puoi abusare della sintassi `${ ... }` per eseguire **codice JS arbitrario**:
+
+Questo può essere **abusato** usando:
```javascript
;`${alert(1)}``${`${`${`${alert(1)}`}`}`}`
```
@@ -518,15 +532,28 @@ loop``
This is a 1 line comment, but "-->" must to be at the beggining of the first line
```
-**JavaScript nuove righe (da** [**JavaScript nuova riga**](#javascript-new-lines) **trucco)**
+**JavaScript nuove righe (da** [**JavaScript new line**](#javascript-new-lines) **trucco)**
```javascript
//Javascript interpret as new line these chars:
String.fromCharCode(10)
@@ -582,7 +609,7 @@ alert("//\u2028alert(1)") //0xe2 0x80 0xa8
String.fromCharCode(8233)
alert("//\u2029alert(1)") //0xe2 0x80 0xa9
```
-**Spazi bianchi JavaScript**
+**JavaScript spazi bianchi**
```javascript
log=[];
function funct(){}
@@ -685,7 +712,7 @@ try{throw onerror=alert}catch{throw 1}
- [https://github.com/RenwaX23/XSS-Payloads/blob/master/Without-Parentheses.md](https://github.com/RenwaX23/XSS-Payloads/blob/master/Without-Parentheses.md)
- [https://portswigger.net/research/javascript-without-parentheses-using-dommatrix](https://portswigger.net/research/javascript-without-parentheses-using-dommatrix)
-**Chiamata di funzione arbitraria (alert)**
+**Chiamata arbitraria di funzione (alert)**
```javascript
//Eval like functions
eval('ale'+'rt(1)')
@@ -745,64 +772,64 @@ top['al\x65rt'](1)
top[8680439..toString(30)](1)
```
-## **Vulnerabilità DOM**
+## **DOM vulnerabilities**
-C'è del **codice JS** che utilizza **dati controllati in modo non sicuro da un attaccante** come `location.href`. Un attaccante potrebbe abusare di questo per eseguire codice JS arbitrario.\
-**A causa dell'estensione della spiegazione di** [**vulnerabilità DOM è stata spostata a questa pagina**](dom-xss.md)**:**
+Esiste del **JS code** che usa **dati controllati in modo non sicuro da un attacker** come `location.href`. Un attacker potrebbe abusarne per eseguire codice JS arbitrario.\
+**A causa dell'estensione della spiegazione di** [**DOM vulnerabilities it was moved to this page**](dom-xss.md)**:**
{{#ref}}
dom-xss.md
{{#endref}}
-Lì troverai una dettagliata **spiegazione di cosa sono le vulnerabilità DOM, come vengono provocate e come sfruttarle**.\
-Inoltre, non dimenticare che **alla fine del post menzionato** puoi trovare una spiegazione sugli [**attacchi DOM Clobbering**](dom-xss.md#dom-clobbering).
+Lì troverai una **spiegazione dettagliata di cosa sono le DOM vulnerabilities, come vengono provocate e come sfruttarle**.\
+Inoltre, non dimenticare che **alla fine del post menzionato** puoi trovare una spiegazione su [**DOM Clobbering attacks**](dom-xss.md#dom-clobbering).
-### Aggiornamento Self-XSS
+### Escalation di Self-XSS
### Cookie XSS
-Se puoi attivare un XSS inviando il payload all'interno di un cookie, questo è solitamente un self-XSS. Tuttavia, se trovi un **sottodominio vulnerabile a XSS**, potresti abusare di questo XSS per iniettare un cookie nell'intero dominio riuscendo a attivare il cookie XSS nel dominio principale o in altri sottodomini (quelli vulnerabili a cookie XSS). Per questo puoi utilizzare l'attacco cookie tossing:
+Se riesci a scatenare una XSS inviando il payload dentro un cookie, questo è solitamente un self-XSS. Tuttavia, se trovi un **subdomain vulnerabile a XSS**, potresti abusare di questa XSS per iniettare un cookie in tutto il dominio riuscendo a triggerare la cookie XSS nel dominio principale o in altri subdomain (quelli vulnerabili a cookie XSS). Per questo puoi usare il cookie tossing attack:
{{#ref}}
../hacking-with-cookies/cookie-tossing.md
{{#endref}}
-Puoi trovare un grande abuso di questa tecnica in [**questo post del blog**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html).
+Puoi trovare un ottimo abuso di questa tecnica in [**this blog post**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html).
-### Inviare la tua sessione all'amministratore
+### Sending your session to the admin
-Forse un utente può condividere il proprio profilo con l'amministratore e se il self XSS è all'interno del profilo dell'utente e l'amministratore vi accede, attiverà la vulnerabilità.
+Forse un user può condividere il suo profile con l'admin e se il self XSS è dentro il profile dell'user e l'admin ci accede, scatterà la vulnerabilità.
### Session Mirroring
-Se trovi del self XSS e la pagina web ha un **session mirroring per gli amministratori**, ad esempio consentendo ai clienti di chiedere aiuto, affinché l'amministratore possa aiutarti, vedrà ciò che stai vedendo nella tua sessione ma dalla sua sessione.
+Se trovi del self XSS e la web page ha una **session mirroring for administrators**, per esempio permettendo ai clienti di chiedere aiuto e affinché l'admin ti aiuti lui vedrà quello che stai vedendo nella tua session ma dalla sua session.
-Potresti far **attivare il tuo self XSS all'amministratore** e rubare i suoi cookie/sessione.
+Potresti far sì che l'**administrator trigger your self XSS** e rubare i suoi cookies/session.
-## Altri Bypass
+## Other Bypasses
-### Unicode normalizzato
+### Normalised Unicode
-Potresti controllare se i **valori riflessi** vengono **normalizzati in unicode** nel server (o nel lato client) e abusare di questa funzionalità per bypassare le protezioni. [**Trova un esempio qui**](../unicode-injection/index.html#xss-cross-site-scripting).
+Puoi controllare se i **reflected values** vengono **unicode normalized** sul server (o lato client) e abusare di questa funzionalità per bypassare le protezioni. [**Find an example here**](../unicode-injection/index.html#xss-cross-site-scripting).
-### Bypass del flag PHP FILTER_VALIDATE_EMAIL
+### PHP FILTER_VALIDATE_EMAIL flag Bypass
```javascript
">