Citar
MSIE & Mozilla Firefox: Error de diseño en el evento onKeyDown
[Descripción]
HTML, al igual que otros lenguajes, posee una serie de eventos, que pueden ser aplicados a
diversos elementos, para que inicialicen, cuando se den las condiciones, unas operaciones en
concreto. OnKeyDown es uno de los tantos eventos existentes, y se inicializa cuando se
presiona una tecla sobre el elemento en cuestión. Partiendo de esta idea, el fallo que se
describirá a continuación se basa en lo explicado anteriormente...
Mediante el evento OnKeyDown es posible cambiar el foco de actividad cuando se presione
una tecla y volver al elemento inicial sin que el usuario se percate de lo sucedido. De este modo,
se estarán introduciendo caracteres en campos, aparentemente ocultos.
Dicho así, el asunto a tratar no parece ser tan peligroso, pero y si el campo sobre el cual el
usuario está escribiendo, inconscientemente, es del tipo file, o lo que es lo mismo,
designado para la subida de archivos al servidor. La respuesta es sencilla; que se estará alterando
la ruta del archivo a subir sin el permiso del usuario.
Siendo más directos, interactuando con estos eventos, es posible subir cualquier archivo del ordenador
del usuario al servidor donde se encuentra alojada la página Web.
En Internet Explorer, mediante el objeto clipboardData y el método setData, es posible
designar un nuevo valor al portapapeles, así, con tal solo pulsar CTRL + V (pegar) en la ventana activa
de la página Web, se introducirá la ruta, que asignamos al portapapeles, en el campo tipo file,
todo esto debido al cambio de foco inicializado cuando se presiono la tecla V. También es posible realizar
el mismo proceso, tecleando sobre algún elemento, para que así, las teclas presionadas pasen a formar parte
del valor del campo tipo file.
En Mozilla Firefox no es posible alterar el valor del portapapeles, y el mecanismo del cambio de foco no
es directo, siendo así, el cambio de foco sería hacia el ya conocido botón Examinar... y
no hacia el campo de texto que determina la ruta del archivo. Debido a este pequeño inconveniente es
necesario hacer uso del atributo for, perteneciente a la etiqueta label, el cual enlaza
directamente la misma con el elemento que se especificó en el atributo nombrado anteriormente.
Fijando como valor de éste atributo el nombre del campo tipo file, hacemos que cuando se cambie el
foco de actividad a la etiqueta label se autoredireccionare al campo tipo file, pudiendo así
alterar la ruta del archivo al teclear sobre otro elemento.
Seguidamente y sin el consentimiento del usuario, se autoenviaría el formulario, acabando con la subida
del archivo al servidor.
[Versiones no afectadas]
- Mozilla Firefox 2.0.0.8
[Enlaces]
- Exploit (MSIE): http://foro.elhacker.net/index.php/topic,186061.msg885464.html#msg885464
- Prueba del concepto (MSIE && FF): http://ns2.elhacker.net/yeikos/poc/onkeydown/
- Advisory (FF): http://sla.ckers.org/forum/read.php?3,13142
- Prueba del concepto (FF): http://yathong.googlepages.com/FirefoxFocusBug.html










Autor



En línea


