Si desea implementar un escáner XSS, ¿es absolutamente necesario usar un intérprete JS? ¿Por qué?

4

En una discusión reciente sobre un escáner de vulnerabilidades de seguridad que devuelve falsos positivos para la detección XSS, noté que el escáner simplemente inyecta una cadena como "this_is_my_string_" (sin las comillas dobles) y si ve la cadena en la respuesta HTML, dice que existe un XSS.

Hablando con el autor del escáner, le pregunté cómo es posible decir que existe un XSS que solo inserta ese tipo de cadena sin < > '' o cualquier char especial (solo _). Dice que, como el escáner no incluye un intérprete JS, la detección siempre será poco confiable y se necesitará confirmación manual.

¿Es absolutamente necesario usar un intérprete de JS para detectar automáticamente las vulnerabilidades de XSS?

¿Será muy poco fiable insertar el localizador XSS 2 llamado de OWASP:

'';!--"<XSS>=&{()}

y busca caracteres especiales que no estén codificados en la respuesta? ¿Por qué?

    
pregunta kinunt 22.06.2013 - 10:20
fuente

1 respuesta

4

Detectar de forma confiable las secuencias de comandos entre sitios es una tarea relativamente compleja, simplemente insertar una cadena sin caracteres de control y buscarla en la respuesta, es una muy mala idea, ya que se verá abrumado por falsos positivos.

Lo que la mayoría de los escáneres es tomar una serie de vectores estándar (por ejemplo, "> < script > alert (1) < / script > <") y luego ver la respuesta de esa cadena sin codificar.

Incluso entonces esto no es perfecto, ya que depende del contexto de la respuesta en cuanto a si es explotable.

Una mejor manera de manejar esto es mirar el DOM de la página resultante y mirar el JavaScript ejecutado en la carga de la página para ver si su vector se ha incluido en una ubicación ejecutable. Obviamente, esto requiere un motor de representación HTML y un motor de representación JavaScript.

También existe el problema de seguir los enlaces si el escáner incluye una araña para encontrar contenido. Sin un intérprete de JS, es probable que la araña pierda los enlaces que solo se pueden seguir mediante la evaluación de JavaScript, de los cuales hay muchos en estos días.

Entonces, la respuesta sería que un intérprete de JS no es un requisito absoluto, pero ayudará mucho.

    
respondido por el Rоry McCune 22.06.2013 - 11:42
fuente

Lea otras preguntas en las etiquetas