2011-09-15 10 views
6

He sufrido varios ataques XSS contra mi sitio. El siguiente fragmento de HTML es el vector XSS que se ha inyectado por el atacante:¿Alguien podría decirme por qué/cómo funciona este vector XSS en el navegador?

<a href="mailto:"> 
<a href=\"http://www.google.com onmouseover=alert(/hacked/); \" target=\"_blank\"> 
<img src="http://www.google.com onmouseover=alert(/hacked/);" alt="" /> </a></a> 

Parece que la escritura no debe ejecutar, pero utilizando la herramienta de desarrollo de IE9, pude ver que el navegador traduce el HTML para lo siguiente:

<a href="mailto:"/> 
<a onmouseover="alert(/hacked/);" href="\"http://www.google.com" target="\"_blank\"" \?=""> 
</a/> 

Después de algunas pruebas, resulta que el \" hace que el 'onmouseover' atributo 'en vivo', pero yo no sé por qué ¿alguien sabe por qué este vector tiene éxito

+1

Parece que el \ "está comentando el", dejando que el presupuesto forme parte de la url (inválida). Puede tener valores de atributo sin comillas en HTML. también es válido. Pero esto es interesante. No sabía que \ "funcionaba así. – Erlend

+0

Parece cualquier carácter delante del", lo convierte en una parte del valor del atributo. – Erlend

Respuesta

5
.?

Así que para resumir los comentarios: Sticking a carácter delante de la cita, convierte la cita en una parte del valor del atributo en lugar de marcar el principio y el final del valor. Esto funciona igual de bien:

href=a"http://www.google.com onmouseover=alert(/hacked/); \" 

atributos HTML permite quoteless, por lo que se convierte en dos atributos con los valores dados.

Cuestiones relacionadas