¿Es posible realizar un ataque XSS en el título / subtítulo de una página web?

1

Tengo una carga útil XSS que ejecutó correctamente el javascript cuando pegué la URL en el navegador y presioné Enter. Esta es la URL:

localhost/path/to/file.jsp?aMessage=%3Cscript%3Ealert(%27XSSed%27)%3C/script%3E

Donde aMessage se muestra en una tabla así:

<table>
  <tr>
     <td>
         <%= myObject.getString("aMessage") %>
     </td>
  </tr>
</table>

El marcado se ve así:

localhost/path/to/file.jsp?aMessage=<script>alert('XSSed')</script>

El resultado: aparece un cuadro de diálogo de alerta que dice 'XSSed'. Luego intenté realizar un ataque XSS utilizando el título / subtítulo de la página web, pero no funcionó. Esta fue la nueva URL:

localhost/path/to/file.jsp?aTitle=%3Cscript%3Ealert(%27XSSed%27)%3C/script%3E&aSubTitle=%3Cscript%3Ealert(%27XSSed%27)%3C/script%3E

donde aTitle se asigna al título y aSubTitle se asigna a subtítulo en el jsp de esta manera:

<popup
    title = '<%= myObject.getString("aTitle") %>'
    subTitle = '<%= myObject.getString("aSubTitle") %>'>
</popup>

Donde la ventana emergente es una etiqueta personalizada en un archivo xml.

Así que tengo un par de preguntas:

1) ¿Es posible realizar un ataque XSS usando el título / subtítulo de una página web? Me pregunto si es necesario escapar de los caracteres en estos campos también, o si está bien aceptar cualquier texto. (Sé que en general no es una buena idea, solo por curiosidad).

2) Si ES posible, ¿por qué no funciona esto?

    
pregunta Michael 06.07.2017 - 18:12
fuente

1 respuesta

1
  1. Sí, es posible. Todo depende de dónde se refleja el contenido en el marcado, y si el contenido se escapa correctamente para el contexto dado.

  2. Su xss no funciona en los campos de título porque no está formateado correctamente para el contexto dado. El marcado para "aMessage" está en un contexto de elemento. Su carga útil XSS está formateada para ese contexto. "aTitle" y "aSubtitle" están en un contexto de atributo. Su carga útil no está formateada para ese contexto.

Tienes un par de opciones diferentes para que funcione:

  1. Mira si puedes acceder a un contexto de elemento. Intente ingresar un subtítulo con un valor como
  

"> < / popup > < script > alert ('xss'); < / script > < popup >

El marcado resultante debería tener un aspecto similar a

  

"< popup title=" Lo que haya ingresado para el título "subTitle=" "> < / popup > < script > alert ('xss'); < / script > < popup > < / popup >

  1. Si la salida se codifica para un contexto de atributo, intente explotar un evento de javascript para ejecutar su carga útil. Por ejemplo:
  

"onmouseover=" alert ('xss'); "   podría causar que su carga útil se ejecute cuando el usuario se mueva sobre su contenido.

    
respondido por el user52472 06.07.2017 - 19:10
fuente

Lea otras preguntas en las etiquetas