¿Cómo usar la codificación Unicode para evadir el filtro XSS?

5

Recientemente, he encontrado un XSS reportado donde el atacante es Unicode codificando la carga útil en los parámetros HTTP GET para evadir el filtro XSS existente -

Mipreguntaes:¿cuándoelservidor/laaplicaciónconvierteelUnicodeentextosinformato?¿EsalleerlosvaloresdelosparámetrosGET?Siesasí,¿porquénoelfiltroescapazdedetectarlo?

Elataquenofunciona,cuandoseproporcionalamismacargaútilentextosinformato.LaaplicaciónseimplementaenIIS7.

Cualquierestrategiademitigaciónparaestetipodetécnicadeevasióntambiénserávalorada.

ACTUALIZACIÓN: enlace restringe el uso de caracteres Unicode como URL. ¿Cuáles son las posibilidades de que IIS 7 aún acepte caracteres Unicode como parte de los valores GET de URL? Tengo algunas aplicaciones web php vulnerables para las pruebas (DVWA, implementadas en el servidor WAMP) que son fácilmente vulnerables a vectores de ataque XSS muy simples como <script>alert(1)</script> . Intenté reemplazar algunos caracteres con su equivalente en Unicode, ¡¡pero esa cadena codificada no invoca a XSS!

    
pregunta Arka 22.03.2017 - 13:37
fuente

1 respuesta

1

Utilice el paquete AntiXssEncoder de Nuget con:

Install-Package AntiXSS -Version 4.3.0

Esta clase tiene diferentes codificadores para cada caso en que estos valores se reflejan, por ejemplo, css, JavaScript, HTML y URL; Utilice estos métodos dependiendo de su caso, por ejemplo:

En el uso de CSS: CssEncode("data")
En el uso de Javascript: JavaScriptStringEncode("data")

Esta solución permite la validación de los tipos principales para omitir la codificación, la garantía de \ u0027,% 27 y muchas opciones diferentes.

Otra forma es primero normalizar y codificar los datos, esto permite validar, por ejemplo,% u0027, \ x00,% 00 y cambiar el valor a un idioma específico para evadir eludir una validación.

enlace enlace

Espero haberte ayudado.

    
respondido por el Jorge 12.01.2018 - 00:39
fuente

Lea otras preguntas en las etiquetas