Técnicas para identificar el punto de inyección XSS

3

Estoy tratando de encontrar una manera de entender qué línea de un script de JavaScript es responsable de una inyección XSS. Supongamos que tengo un sitio web que solicita mi nombre y, en alguna página, establezco mi nombre como <script>alert("XSS")</script> .

Más tarde, navego por el sitio web y de alguna manera veo cómo se ejecuta mi carga útil. Miro la fuente de la página y veo que mi carga útil no está allí, por lo que debería haber sido activada por algún código JavaScript. ¿Cuál es la mejor manera de encontrar qué línea de código es realmente responsable de la inyección? Por lo general busco innerHTML(...) calls, tratando de averiguar la ID del elemento donde se inyecta mi carga útil, pero no siempre funciona. También intenté usar <script>debugger;</script> como carga útil, pero solo veo que mi script está siendo depurado, y no el responsable de la inyección.

Lo mejor sería si hubiera una manera de detener la ejecución del script responsable de la inyección justo después de que se activó el alert() , pero no encontré ninguna forma. ¿Alguna ayuda?

    
pregunta Alessandro Guagnelli 09.02.2017 - 21:55
fuente

1 respuesta

1

Respuesta parcial aquí: si el script se ejecuta con la ayuda de eval (que es lo que ocurre si usa html() en jQuery 2.x), puede cambiar la carga útil a algo lanzando un error :

throw "XSS payload executed!";

Luego encienda la consola (F12 en la mayoría de los navegadores). Navegue por el sitio hasta que active la carga útil. Cuando se produzca el error, tendrá un pequeño rastro de strack para inspeccionar en la consola.

    
respondido por el Anders 09.02.2017 - 22:26
fuente

Lea otras preguntas en las etiquetas