Come usare la codifica Unicode per eludere il filtro XSS?

5

Recentemente, mi sono imbattuto in un XSS segnalato in cui l'autore dell'attacco è Unicode che codifica il payload nei parametri GET HTTP per eludere il filtro XSS esistente -

Lamiadomandaè-quandoilserver/l'applicazioneconvertel'Unicodeintestonormale?StaleggendoivalorideiparametriGET?Sesì,alloraperchéilfiltrononèingradodirilevarlo?

L'attaccononfunziona,quandolostessocaricoutileèfornitointestosemplice.L'appèdistribuitasuIIS7.

Qualsiasistrategiadimitigazioneperquestotipoditecnicadievasionesaràancheappagata.

UPDATE:il link limita l'uso di caratteri unicode come URL. quali sono le probabilità che IIS 7 accetti ancora i caratteri Unicode come parte dei valori GET dell'URL. Ho alcune applicazioni web php vulnerabili per i test (DVWA, implementate nel server WAMP) che sono facilmente vulnerabili a vettori di attacco XSS molto semplici come <script>alert(1)</script> . Ho provato a sostituire pochi caratteri con il loro equivalente Unicode ma quella stringa non invoca XSS !!!

    
posta Arka 22.03.2017 - 13:37
fonte

1 risposta

1

Usa il pacchetto AntiXssEncoder di Nuget con:

Install-Package AntiXSS -Version 4.3.0

Questa classe ha diversi encoder per ogni caso in cui questi valori vengono riflessi, ad esempio css, JavaScript, HTML e URL; Utilizzare questo metodo dipende dal caso, ad esempio:

Nell'uso dei CSS: CssEncode("data")
In uso Javascript: JavaScriptStringEncode("data")

Questa soluzione consente di convalidare i tipi principali per ignorare la codifica, la garanzia per \ u0027,% 27 e molte opzioni di diferenti.

L'altro modo è prima normalizzare e codificare i dati, questo consente di convalidare, ad esempio,% u0027, \ x00,% 00 e cambiare il valore in una lingua specifica per eludere il bypass di una convalida.

link link

Spero di aiutarti.

    
risposta data 12.01.2018 - 00:39
fonte

Leggi altre domande sui tag