Prevención de XSS mediante listas negras

2

Tengo una vulnerabilidad XSS reflejada en mi aplicación web. Decidí adoptar el enfoque de lista negra en lugar del enfoque de lista blanca popular.

Mi pregunta es ¿puede existir una llamada maliciosa de javascript sin abrir paréntesis (\ u0028) y cerrar paranthesis (\ u0029)?
Por malicioso, me refiero a algo que puede afectar al usuario.
Si su respuesta es SÍ, proporcione un código de ejemplo que se pueda inyectar en un XML.

    
pregunta KatariaA 05.06.2014 - 14:13
fuente

3 respuestas

3

Encontré algunos enlaces web que pueden darte una respuesta:

enlace

enlace

Permítame concluir las respuestas:

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

o

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

Sin embargo, puedes ver que las listas negras no funcionan. La XSS Filter Evasion List muestra muchas posibilidades de cómo engañar un filtro. Deberías escapar de la entrada propiamente dicha.

    
respondido por el D. Schalla 05.06.2014 - 14:47
fuente
1

Además de los ejemplos de JavaScript que ya se han mencionado, los paréntesis también se pueden ocultar con diferentes codificaciones de XML y JavaScript.

Pero incluso si nadie supiera cómo omitir tu filtro, eso no probaría nada. Simplemente podría ser una falta de conocimiento o creatividad por nuestra parte. ¿Quién sabe todas las características locas de JavaScript y las peculiaridades del navegador?

La lista negra simplemente no es la respuesta. Muchas personas inteligentes lo intentaron y pensaron que finalmente habían escrito el filtro XSS perfecto, pero luego apareció un atacante aún más inteligente y demostró que estaban equivocados. Es una carrera de armamentos infinita.

Por muy tentador que sea aceptar el desafío, es mucho mejor evitarlo. Simplemente no permita que sus usuarios inyecten el código JavaScript cualquiera , y no tendrá que preocuparse por encontrar las partes malas.

    
respondido por el Fleche 05.06.2014 - 15:46
fuente
1

Como dijeron los demás, no es tan simple como la lista negra. La ofuscación de código puede superarlo. Realmente no tengo ganas de mostrar un ejemplo porque no soy tan bueno con JavaScript. Además, hay muchos trucos para pasar por alto estos filtros. Si tienes tiempo sugerirías leer la inyección XSS: Ataque y Defensa.

    
respondido por el Æther 05.06.2014 - 16:19
fuente

Lea otras preguntas en las etiquetas