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?