¿Es temporal el problema de XSS?

1

Utilizo un sitio con regularidad, así que quería asegurarme de que fuera seguro. Una de las cosas que verifiqué fue que cuando cambié mi primer nombre a <img src="http://blah.blah/blah/blah.notanextension" onerror=alert(document.cookie);>Henry , no me dio la alerta con todas mis cookies (ya había determinado que eliminaron las etiquetas <script> ). Sin embargo, después de ir a la página de inicio y volver a visitar mi perfil, el XSS se eliminó de mi nombre. Verifiqué que el filtro que hizo esto se aplica recursivamente y funciona bastante bien por lo que pude ver. El sitio utiliza tokens CSRF, por lo que alguien no pudo insertar XSS a través de CSRF. ¿Es este un problema de seguridad a pesar de que la entrada está desinfectada cada vez que vuelvo a visitar la página?

    
pregunta 735Tesla 14.02.2014 - 22:24
fuente

2 respuestas

2

Sí, podría ser un problema. Depende del punto en que se desinfecte el primer campo de nombre. Mis primeras impresiones de que era una actualización de DOM hizo que se mostrara la alerta (consulte XSS basado en DOM ). Sin embargo, como dijiste que podías actualizar la página, esto es poco probable a menos que se agregue un hash a la barra de direcciones (por ejemplo, www.example.com/page.aspx#name=foo ).

Tal vez se ejecute un script para sanear el valor cuando se muestre la página de inicio (que sería impar). También existe la posibilidad de que ciertos valores puedan pasar por alto el saneamiento y explotar la vulnerabilidad. Cualquiera de estas cosas significa que la carga útil XSS puede ejecutarse cuando un usuario administrador ve la lista de usuarios.

También existe la posibilidad de que Controles de acceso rotos puedan permitir que otro usuario actualice el nombre de otro usuario. para explotar esta falla XSS cuando inician sesión.

Todo depende de cuándo se ejecuta la desinfección, por lo que se necesitaría más investigación en el sitio para determinar esto.

    
respondido por el SilverlightFox 17.02.2014 - 12:31
fuente
1

Por lo que dices, parece que la actualización no se mantiene en la base de datos, se muestra en la página cuando la guardas, pero no si te alejas y luego regresas.

Si ese es el caso, es probable que este sea un riesgo limitado (por no decir que no recomendaría repararlo), ya que sería difícil construir un escenario de ataque válido en el que esto podría tener un impacto.

Para que un atacante lo explote, parece que necesitarían acceso a su sesión para ingresar los datos, momento en el que robar su token de sesión es un poco inútil.

Como no persiste, no hay riesgo de que otro usuario vea tu nombre y ejecute el JavaScript.

Si los datos que ingresó se muestran en otra parte de la aplicación (por ejemplo, en una página de administración), obviamente, sería un XSS de segundo orden desagradable que podría tener un gran impacto.

    
respondido por el Rоry McCune 17.02.2014 - 12:59
fuente

Lea otras preguntas en las etiquetas