Vulnerabilidad en una protección de redirección de Crellan

Crellan es uno de tantos juegos de navegador que hay por ahí (como el famoso Ogame). ¿Por qué hablo de él? Sencillo, porque salió en los resultados de google con una url bastante “sospechosa”.

La url era “http://www.crellan.com/external.php?url=” y es una medida de protección. Si algún usuario escribe un enlace a otra web, crellan avisa de que se va a abandonar crellan y se entrará en otra web. De hecho dicen que NO hagas clic en el enlace a menos que sepas que es seguro.

El caso es que si entramos en esa dirección con el parámetro “url” vacío, el código que se genera es:

<a href='http://' />http://</a>

Una petición “normal” sería del estilo:

http://www.crellan.com/external.php?url=http://www.google.com

Que generaría el código:

http://www.google.com

Ahora supongamos que queremos hacer que la gente llegue a esa dirección (google.com) sin necesidad de hacer click en el enlace, ¿qué se os ocurre? Una opción es hacer uso de “onmouseover”.

Onmouseover se ejecutará cuando (no lo adivinaríais nunca) el ratón se pone encima del enlace. En este caso yo he hecho que se muestre una ventana avisando y luego se envíe a la persona a la web, sin que tenga que hacer click:

http://www.crellan.com/external.php?url=http://www.google.com' onmouseover='javascript:alert("Y sin hacer click!");window.location="http://www.google.com"

Que genera el código:


	http://www.google.com' onmouseover='javascript:alert("Y sin hacer click!");window.location="http://www.google.com"

Y por tanto se nos muestra una ventana diciendo “Y sin hacer click!” y se nos redirige a google.com.

¿Qué podemos aprender de todo esto? Bueno, lo primero es que si hacemos un sitio web y el cliente nos envía lo que “suponemos” es una url, deberíamos comprobar que realmente es una url. Por cutre que sea el sistema de parseo de urls que usemos, salta a la vista que lo que yo he introducido no es una url válida.

El problema de esta aplicación es que se basa en “eliminar” de la url las cosas “malas”, pero no verifica que la url sea válida. En esa lista de “cosas malas” no figura el carácter ‘, así que nos ha sido posible saltarnos su protección.

Lección: Verificad los datos que llegan de los clientes.

Por Carballude

Me llamo Pablo Carballude González, soy graduado en computación con master en HCI y Seguridad Informática. Actualmente trabajo para Amazon en Seattle como Software Developer Engineer. Soy de esas personas que no saben si los textos autobiográficos deben ser en primera o tercera persona. Lo intenté en segunda, pero no le entendí nada :P

3 comentarios

  1. you don't respect the President of the US and so what if you don't? Is that now a crime?I don't think so YET. Your name is familiar but I can not place where I have heard or read it, can you help me out with that? How is your voice blasted all over the country and how are they trying to blast you all over the world? Can you be more specific?

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *