Datos no escapados en etiquetas div o p, pero no se pueden explotar

2

Una aplicación web toma la entrada del usuario y muestra los datos, sin ningún tipo de escape o codificación, en etiquetas div o p. Entonces, si proporciono <script>alert(1)</script> como entrada, la fuente se vería así:

<div>
  <p><script>alert(1)</script></p>
</div>

A partir de esto, asumo que la aplicación web es vulnerable y que el script se ejecutará. Ese suele ser el caso, pero he visto algunas situaciones (no puedo proporcionar ningún ejemplo en este momento, desafortunadamente) donde no es así. La carga útil no se ejecuta aunque se refleje en la página.

¿Qué explicaciones podría haber para este comportamiento? ¿Hay alguna otra forma de prevención XSS que impida que se ejecuten los scripts no escapados?

    
pregunta SaAtomic 02.11.2017 - 09:26
fuente

1 respuesta

6

Veo varias explicaciones posibles para este misterio:

  • Los navegadores integrados en la protección XSS detuvieron la ejecución del código. Sin embargo, no estoy seguro de si la carga útil se reflejaría en el documento si este fuera el caso. (De acuerdo con Conor Mancone en Chrome, la carga útil se reflejará en la fuente, pero se resaltará en rojo cuando elija ver fuente.)
  • Hay una Política de seguridad de contenido que detiene la ejecución de los scripts en línea. Inicie la consola del desarrollador, vaya a la pestaña de la red y vea si puede encontrar un encabezado de respuesta llamado Content-Security-Policy .
  • El contenido se coloca en el documento utilizando JS. Si configura los elementos DOM propiedad text (o usa el método jQuery .text() ), las etiquetas no se interpretarán como etiquetas, pero tampoco se codificarán como &gt; . Para ver si este es el caso, use ver fuente y vea si puede encontrar su carga útil en la fuente de la página real. Si no está allí, debe haberse introducido en el documento por medio de JS.
respondido por el Anders 02.11.2017 - 10:40
fuente

Lea otras preguntas en las etiquetas