Prevenzione XSS tramite black-listing

2

Ho una vulnerabilità XSS riflessa nella mia applicazione Web. Ho deciso di adottare l'approccio della lista nera invece del popolare approccio white-list.

La mia domanda è: esiste una chiamata javascript dannosa senza aprire la parentesi (\ u0028) e la parata stretta (\ u0029)?
Da malintenzionato, intendo qualcosa che può avere un impatto sull'utente.
Se la tua risposta è SÌ, ti preghiamo di fornire un codice di esempio che può essere inserito in un XML.

    
posta KatariaA 05.06.2014 - 14:13
fonte

3 risposte

3

Ho trovato alcuni collegamenti che potrebbero darti una risposta:

link

link

Lasciatemi concludere le risposte:

<img src="fileThatDoesNotExist" onerror="javascript:window.onerror=alert;throw 'XSS'" dummyParam=""; ?> >

o

<img src="fileThatDoesNotExist" onerror="location.href='data:text/html;base64,PHNjcmlwdD5hbGVydCgiWFNTIik8L3NjcmlwdD4='" dummyParam=""; ?> >

Tuttavia, è possibile vedere che la lista nera non funziona. L' Elenco di evasione dei filtri XSS mostra tonnellate di possibilità su come ingannare un filtro. Dovresti piuttosto sfuggire all'input corretto.

    
risposta data 05.06.2014 - 14:47
fonte
1

Oltre agli esempi JavaScript che sono già stati menzionati, le parentesi possono anche essere nascoste con diverse codifiche sia di XML che di JavaScript.

Ma anche se nessuno sapesse come bypassare il filtro, ciò non proverebbe nulla. Potrebbe semplicemente essere una mancanza di conoscenza o creatività da parte nostra. Chi conosce tutte le stravaganti funzioni JavaScript e le stranezze del browser?

La lista nera semplicemente non è la risposta. Molte persone intelligenti lo hanno provato e hanno pensato di aver finalmente scritto il filtro XSS perfetto, ma poi è arrivato un aggressore ancora più intelligente e hanno dimostrato che avevano torto. È una corsa agli armamenti infinita.

Per quanto possa essere allettante accettare la sfida, è molto meglio evitarlo. Semplicemente non permettere ai tuoi utenti di iniettare qualsiasi codice JavaScript, e non dovrai preoccuparti di trovare le parti danneggiate.

    
risposta data 05.06.2014 - 15:46
fonte
1

Come hanno detto gli altri, non è così semplice come la lista nera. L'offuscamento del codice può superarlo. Non ho davvero voglia di mostrare un esempio di non essere fantastico con JavaScript. Inoltre, ci sono molti trucchi per bypassare questi filtri. Se hai il tempo suggerirei di leggere l'iniezione XSS: attacco e difesa.

    
risposta data 05.06.2014 - 16:19
fonte

Leggi altre domande sui tag