XSS en la etiqueta del título HTML

1

Obtuve un parámetro en la URL que se muestra en la etiqueta HTML <title> . Los > y < se escapan correctamente. El conjunto de caracteres no se puede cambiar. No funcionan las variantes (por ejemplo, hex, url, doble url, base64) de la codificación < y > .

La etiqueta del título es un caso especial, ya que no tiene ningún atributo onEvent. ¿Hay alguna otra forma de realizar un ataque XSS sin cerrar la etiqueta con </title> ?

    
pregunta Jin 21.10.2016 - 14:19
fuente

2 respuestas

3

No trataría la etiqueta <title> de manera diferente a como lo haría con cualquier otra etiqueta, como un <div> . El contexto del que estás hablando (entre las etiquetas HTML) es lo que OWASP llama "Contenido del elemento HTML" en su Prevención XSS hoja de cheet . Recomiendan las siguientes reglas de sustitución:

& --> &amp;
< --> &lt;
> --> &gt;
" --> &quot;
' --> &#x27;
/ --> &#x2F; 

Sin embargo, no puedo, por mi vida, descubrir cómo podrías hacer cualquier daño sin < o > , así que pienso (en oposición a saber ) que estás a salvo. Aún así, no hay daño en seguir las recomendaciones de OWASP a la carta.

En otros contextos, se requieren otras reglas de saneamiento, por lo tanto, no tome esto como solo endocing < y > siempre está bien. No lo es.

    
respondido por el Anders 21.10.2016 - 14:35
fuente
1

Si la pregunta es "¿Por qué necesitamos codificar caracteres distintos de < y >" , esto se debe a que posiblemente existen casos de esquinas? Un ejemplo ingenuo sería cuando la entrada de un cuadro de texto se utiliza para generar, por ejemplo, un href, o una fuente de imagen sobre la marcha.

Posibilidades :

<img src="&{alert('XSS Vulnerable')};"> 

El carácter especial "&" a veces se interpreta como un nuevo segmento de código JavaScript (entidad).

" [event]='code' 

En muchos casos, es posible que un atacante inserte una cadena de explotación, con la sintaxis anterior, en una etiqueta HTML que debería haber sido como:

<A HREF="exploit string">Go</A> 

dando como resultado:

<A HREF="" [event]='code'">Go</A>

<b onMouseOver="self.location.href='http://bad.com/'">text</b> 

A medida que el cursor del cliente se mueve sobre el texto en negrita, ocurre un evento intrínseco y se ejecuta el código JavaScript.

Hay muchos más casos de esquinas / oscuros (en el mundo de hoy) en los que solo se codifica < o > Puede que no sea suficiente. Busque enlace para obtener información sobre casos similares (aunque no un poco obsoletos).

    
respondido por el katrix 21.10.2016 - 17:10
fuente

Lea otras preguntas en las etiquetas