Es difícil idear un vector sin tener la vulnerabilidad real frente a mí, pero en el pasado, cuando enfrenté tales problemas, seguí la forma no alfanumérica de explotarlo. Este blog tiene una excelente descripción de cómo se hace. También se encuentran algunos vectores en este pastie .
Voy a asumir que tienes una forma de ejecutar scripts, pero solo necesitas la carga útil correcta para ejecutar. Desde el blog mencionado anteriormente:
Dado que JavaScript tiene dos formas sintácticas diferentes para acceder a las propiedades, puede acceder a un método de Objeto como un diccionario:
object.method(arguments) === object["method"](arguments)
Entonces, siguiendo este método, su carga útil podría ser algo así como:
this["alert"]("xss")
Si desea extraer la cookie, también puede utilizar
this["alert"](this["document"]["cookie"])
Es de esperar que el uso de cualquiera de estos métodos le permita obtener la ejecución del código que está buscando. Estos no tienen espacios ni barras diagonales: pensaba que todavía tendría que estar dentro de algún tipo de atributo, o debería tener la capacidad de incluirlo en las etiquetas <script>
. En algunos navegadores, podrías probar algo como <script>{your vector}<script>
, y podría funcionar (recuerdo que funcionó para mí en IE hace un tiempo)
EDITAR: Si esto es solo una prueba de concepto para una vulnerabilidad de validación de entrada, también podría incrustar un iFrame. Nuevamente, dependiendo del navegador, los iFrames no necesitan cerrar etiquetas. así que <iframe\src='www.google.com'>
podría hacer el trabajo.