¿Por qué no se ejecuta XSS al omitir la codificación HTML?

0

Estoy intentando ejecutar una carga útil XSS en un campo de búsqueda que toma mi entrada de esta manera:

<input name="q" id="gsasearch" type="text" value="My Input"></input>

Observaciones:

  1. Se filtran < , > y " . Sin embargo, la codificación HTML de estos caracteres funciona.
  2. La entrada está codificada en URL y la URL decodificada y mostrada para mí.
  3. No hay parámetros.

La carga útil utilizada es la versión codificada en HTML de qq"><script>alert('xss')</script> .

Sin embargo, todo lo que veo en la página de resultados es qq"><script>alert('xss')</script> .

XSS no se ejecuta tanto en Chrome como en IE. Si inspecciono el elemento, veo esto:

<input name="q" id="gsasearch" type="text" value="qq"><script>alert('xss')</script>"></input>

Después de usar F2 en las herramientas de desarrollo, pude ver que " se convierte a &quot; , como se muestra a continuación:

<input name="q" id="gsasearch" type="text" value="qq**&quot;**><script>alert('xss')</script>"></input>

Entonces,

I / p - > URL codificada - > URL decodificada - > HTML codificado si es un "

¿Hay alguna manera de evitar esto?

    
pregunta pratik pattanaik 12.12.2018 - 11:05
fuente

3 respuestas

1

La consola de desarrollador y la funcionalidad de "elemento de inspección" del navegador no son una buena manera de verificar si hay XSS. Esto mostrará elementos HTML no codificados, aunque estén realmente codificados correctamente:

AlpresionarF2oalseleccionar"Editar como HTML", muestra correctamente los caracteres codificados:

    
respondido por el Sjoerd 12.12.2018 - 11:12
fuente
0
  

¿Hay alguna manera de evitar esto?

Depende de la aplicación. Hay múltiples maneras;

  1. Enviar versión codificada diferente de "

Puede probar la codificación de URL, es decir,% 22, la codificación de doble URL, es decir,% 2522, equivalentes de Unicode , etc.

  1. Enviando múltiples "

A veces, solo se escapa la primera aparición de caracteres especiales. Por lo tanto, si envía dos ", el primero se codificará mientras que el segundo permanecerá como está.

Además de omitir ", también es posible activar XSS sin desviar", si las estrellas están alineadas. Larga historia corta: IE analiza <meta> antes de realizar cualquier análisis real. Por lo tanto, al usar la etiqueta <meta> , puede definir un conjunto de caracteres diferente para la página y activar XSS usando ese conjunto de caracteres. Aquí hay un ejemplo en vivo;
enlace

Y, en lugar de ver "Inspeccionar elementos", deberías estar viendo el código fuente en su lugar.

    
respondido por el 1lastBr3ath 12.12.2018 - 15:56
fuente
0

Tanto Chrome como IE implementan medidas de filtro XSS que bloquean las vulnerabilidades más básicas de XSS.

Si está probando si una página es vulnerable, recomendaría probar con Firefox o ejecutar Chrome con el parámetro --disable-xss-auditor para deshabilitarla (tenga cuidado de no abrir ninguna instancia anterior o reutilizará la sesión anterior e ignorar el parámetro).

    
respondido por el Ángel 13.12.2018 - 03:43
fuente

Lea otras preguntas en las etiquetas