Perché XSS non viene eseguito quando si ignora la codifica HTML?

0

Sto cercando di eseguire un payload XSS su un campo di ricerca che accetta il mio input in questo modo:

<input name="q" id="gsasearch" type="text" value="My Input"></input>

Osservazioni:

  1. < , > e " sono filtrati. Tuttavia, la codifica HTML di questi caratteri funziona.
  2. L'input è codificato URL e URL decodificati e visualizzati per me.
  3. Non ci sono parametri.

I payload utilizzati sono in versione codificata HTML di qq"><script>alert('xss')</script> .

Tuttavia, tutto quello che vedo nella pagina dei risultati è qq"><script>alert('xss')</script> .

XSS non viene eseguito sia in Chrome che in IE. Se controllo l'elemento, vedo questo:

<input name="q" id="gsasearch" type="text" value="qq"><script>alert('xss')</script>"></input>

Dopo aver usato F2 negli strumenti di sviluppo, ho potuto vedere che " viene convertito in &quot; , come mostrato di seguito:

<input name="q" id="gsasearch" type="text" value="qq**&quot;**><script>alert('xss')</script>"></input>

I / p - > URL codificato - > URL decodificato - > HTML codificato se è un "

C'è un modo per aggirare questo?

    
posta pratik pattanaik 12.12.2018 - 11:05
fonte

3 risposte

1

La console per gli sviluppatori e la funzionalità "inspect element" del browser non sono un buon modo per controllare XSS. Questo mostrerà elementi HTML non codificati, anche se sono veramente codificati correttamente:

PremendoF2oselezionando"Modifica come HTML", mostra correttamente i caratteri codificati:

    
risposta data 12.12.2018 - 11:12
fonte
0

Is there any way to bypass this?

Dipende dall'applicazione. Esistono diversi modi;

  1. Invio di diverse versioni codificate di "

Puoi provare la codifica dell'URL, ovvero% 22, doppia codifica dell'URL, ovvero% 2522, equivalenti Unicode , ecc.

  1. Invio di più "

A volte, solo la prima occorrenza di caratteri speciali viene sfuggita. Quindi, se si inviano due ", il primo sarebbe codificato mentre il secondo rimane così com'è.

Oltre a bypassare ", è anche possibile attivare XSS senza bypassare", se le stelle sono allineate. Per farla breve, IE analizza <meta> prima di fare una vera analisi. Quindi, usando il tag <meta> puoi definire un diverso set di caratteri per la pagina e attivare XSS usando quel set di caratteri. Ecco un esempio dal vivo:
link

E, invece di visualizzare "Ispeziona elementi", dovresti visualizzare il codice sorgente.

    
risposta data 12.12.2018 - 15:56
fonte
0

Sia Chrome che IE implementano un filtro XSS che blocca le vulnerabilità XSS più elementari.

Se stai verificando se una pagina è vulnerabile, ti consiglio di testare con Firefox o di eseguire Chrome con il parametro --disable-xss-auditor per disabilitarlo (fai attenzione a non aprire nessuna istanza precedente, altrimenti riutilizzerà sessione precedente e ignora il parametro).

    
risposta data 13.12.2018 - 03:43
fonte

Leggi altre domande sui tag