Intentando encontrar un XSS, ¿por qué no se ejecuta esta pieza? [duplicar]

3

Hevistoqueestostiposdeinstanciasocurrenconmuchafrecuencia,ytengocuriosidadporsaberporqué(inclusosinunfiltro)noseejecutarán...yaqueelcódigoestájustoahí.Cadavezqueocurreesto,henotadoquecuandoinspeccionasencualquierherramientadedesarrollolasetiquetasnotienenformato;asíqueenunaperspectivavisual,solotextogris.Séqueesunapreguntavagaconpococontenido/contexto,peroenningúnsentido,¿cómoesunlugardeentradacomoeste,aparentemente,sinfiltro,noexplotableyprocesadosinunproblemadeXSS?

Editar:utilicéChrome(conlaprotecciónXSSdesactivada),FirefoxeInternetExplorer(hayunmensajedeadvertenciacuandofiltraalgoquecreequeesunasecuenciadecomandosentresitios).Estoobviamenteterminósinresultadosniexplicación.

Este es el ejemplo de elemento que di cuando lo sigues.

    
pregunta Ryan 21.03.2017 - 18:42
fuente

1 respuesta

1

Esto no tiene nada que ver con los filtros XSS, como lo demuestra el mismo comportamiento en muchos navegadores. No es una cosa de consulta, solo es contenido. La respuesta es simple y reconfortante.

Las etiquetas de script en línea agregadas a través de .innerHTML=strHTML , o el método DOM elm.appendChild(script) no se ejecutan. Esto significa que puede inyectar etiquetas maliciosas en todo el día; a menos que dichas etiquetas lleguen al navegador como HTML codificado (se puede ver en fuente de visualización), son benignas.

el método $(elm).html(strHTML) usado en exceso de jQuery ejecutará scripts, pero solo porque analiza el contenido de la cadena y envía el contenido de la etiqueta <script> a la función window.eval() , que lo ejecuta. Sin embargo, de forma predeterminada, el contenido de la etiqueta de script dinámico NO se ejecuta.

Su ejemplo usa reaccionar, que tiene un DOM virtual que reconcilia el HTML de la página existente y el HTML dinámico internamente usando un modelo que no es del DOM. Una vez que se encuentran los cambios, se hacen una serie de pequeños reemplazos de elementos DOM. De nuevo, agregar etiquetas <script> a través del DOM no ejecuta el contenido de las etiquetas, por lo que es seguro en cualquier navegador.

Aún debe tener en cuenta los "controladores de eventos" basados en atributos como onerror , onload , onmouseover , etc., pero <script>somethiungBad()</script> es benigno si no está impreso por un servidor o se ha agregado "inteligentemente" por jQuery. El marco React utilizado en el ejemplo podría filtrar esos atributos problemáticos para usted, no soy un experto en Reaccionar ...

    
respondido por el dandavis 21.03.2017 - 21:10
fuente

Lea otras preguntas en las etiquetas