Scripting cross site quando i segni di maggiore o minore rispetto a fuggono?

17

Se un sito web codifica < in &lt; e > diventa &gt; , è ancora possibile eseguire cross-site scripting? In cosa racchiudere i tag dello script?

Ad esempio, su uno dei miei siti posso usare <script>alert(1)</script> normalmente, ma come posso fare la stessa cosa quando si verifica la codifica?

    
posta Bob John 17.02.2015 - 05:57
fonte

2 risposte

17

Oh sì lo è!

Considera questo HTML:

<a href="{{str}}">

e considera un input come:

" onmouseover="alert('GOTCHA')"

Ottieni l'immagine.

Se il tuo javascript è stato iniettato entro un tag, allora non hai bisogno delle parentesi angolari. Ho preso in prestito questo post S / O simile: link

Se sei interessato all'evasione del filtro come questo, consulta:

link

Questo ha tutte le cose comuni.

Per quanto riguarda la sicurezza: codifica tutto! Non sai mai quanto sia intelligente l'aggressore.

    
risposta data 17.02.2015 - 06:17
fonte
3

Quando si parla di scripting cross-site, la cosa più importante è il contesto. Il contesto in cui viene riflesso o memorizzato. Lo dimostrerò con un esempio reale della mia esperienza. Una volta mentre cercavo bug, ho notato che un parametro URL si rifletteva all'interno di una variabile:

http://www.example.com/blah.php?id=test&var=101011

Il valore di var si rifletteva nell'origine della pagina al caricamento della pagina, approssimativamente nel seguente formato, all'interno di un blocco di script:

var a = "101011";

e iniettando tanto quanto un '<' avrebbe deviato la richiesta al WAF che avrebbe generato una pagina di errore, quindi il mio carico utile effettivo era:

prompt(1)";eval(a);

che ha aggirato il WAF ed è diventato un caso di successo di XSS riflesso. Quindi, il carico utile dovrebbe essere modificato in base al contesto e potresti non aver bisogno dei tag. Spero che questo ci abbia aiutato.

    
risposta data 19.02.2015 - 16:03
fonte

Leggi altre domande sui tag