XSS en etiqueta de título HTML sin barra diagonal

5

Estoy intentando averiguar si esto es vulnerable contra XSS: puedo controlar el contenido de la etiqueta title a través de la URL. Esto haría al sitio vulnerable si no fuera por el hecho de que solo toma el texto hasta que aparezca la primera barra diagonal, lo que hace que parezca imposible cerrar la etiqueta title . Ya probé % 2F , pero el servidor parece convertirlo en una barra diagonal y, por lo tanto, cortar la entrada allí. Posiblemente sea mod_rewrite , pero sin AllowEncodedSlashes .

Ejemplo: domain.com/subfolder/myXss</title>bla llevará a ... < title > myXss < < / title >

Entonces, mi pregunta es si uno de estos dos es posible:

  • ¿Puedo codificar una barra diagonal de alguna otra manera?
  • ¿Puedo de alguna manera cerrar la etiqueta title o insertar un código malicioso en la etiqueta del título? No puedo simplemente insertar script , ya que no se permite nada más dentro de la etiqueta title .
pregunta Philipp F 30.05.2014 - 15:14
fuente

2 respuestas

1

Dentro de una etiqueta HTML5 <title> , no es posible inyectar nuevos elementos sin permitir barras diagonales.

Dado que el analizador HTML de su navegador es una máquina de estado, simplemente puede seguir las transiciones de estado del tokenizer (según Especificación de la sintaxis HTML ) y vea hasta dónde llega.

En su caso, una etiqueta <title> en la sección principal evoca el " algoritmo genérico de análisis de elementos RCDATA ". Desde el estado RCDATA , se ignoran todos los corchetes de apertura a menos que se cierre el más reciente. etiqueta abierta Por lo tanto, la única continuación que no se tratará como texto sin formato es la secuencia literal </title> . Y dado que esa cadena contiene una barra diagonal, no será posible ningún XSS. (Este comportamiento es similar a otros elementos como <textarea> ).

Mi respuesta aquí tiene una descripción un poco más detallada de cómo el tokenizer puede ayudarlo a razonar sobre el posible XSS.

  

¿Puedo codificar una barra diagonal de alguna otra manera?

El analizador de HTML solo acepta un literal / ( 0x2f ). Si está preguntando cómo se podría engañar a la aplicación web para que imprima una barra, esto sería pura especulación, ya que depende de la implementación de la aplicación web.

    
respondido por el Arminius 31.05.2016 - 02:46
fuente
0

Puedes intentar muchas cosas, depende de lo que haga el servidor. Doble codificación, codificación hexadecimal. Si estuviera viendo esto, mi primer paso sería cómo puedo hacerlo sin una barra invertida.

La etiqueta del título no necesita estar cerrada, solo necesitas poder acceder al contexto de JavaScript.

En otras palabras, podría insertar      alerta de script (xss) / script (No me deja agregar las etiquetas de script de apertura y cierre) y se ejecutaría si se permitiera la barra diagonal, no tendría que cerrar la etiqueta html.

¿Qué tal algo como     % 3Csvg% 20onload% 3D% 22alert (% 27xss% 27)% 22% 3E

    
respondido por el user3632719 31.03.2016 - 22:48
fuente

Lea otras preguntas en las etiquetas