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í.

Bookmarklets y Google Maps

Hace unos dias ya comente brevemente que eran los bookmarklets y para que podian ser utilizados. Por lo general se trata de funciones y métodos de javascript que son utilizados desde la barra del navegador pero también podemos hacer uso de funciones definidas en la propia página que visitamos.

Por ejemplo, ¿quien no ha sentido curiosidad por conocer las coordenadas de su casa cuando visita Google Maps? una forma "sencilla" de saber las coordenadas de un punto en los mapas de google es pulsar sobre el enlace que muestra el texto "enlazar", al pulsar en dicho enlace se muestra una pequeña ventana que nos da información sobre la url que debemos teclear en nuestro navegador si queremos ir directamente a la localización que tenemos en pantalla (o si queremos guardarla en nuestros favoritos). También nos muestra el código que deberiamos utilizar si quisieramos poner el mapa en nuestra página web.

Ambos códigos deben saber la localización exacta (latitud y longitud) del punto que estamos visualizando ya que de no ser así no podrian volver a mostrarlo. Uno de los parámetros que se muestran es el parámetro llamado ll, es decir, latitud y longitud

http://maps.google.es/?ie=UTF8&ll=40.513799,-3.383789&spn=14.755672,31.464844&t=h&z=5

En el caso concreto del punto que estamos visualizando obtenemos que la latitud es 40.513799 y la longitud -3.383789 pero como ya comentaba al principio de este post, con un bookmarklet se puede automatizar este proceso. ¿Como obtener el código javascript que nos de esta información? para ello hay que documentarse un poco sobre como funciona GMaps, concretamente, su API

La API (application programming interface) no es ni más ni menos que un conjunto de funciones (en este caso javascript) que facilitan al usuario la tarea de "comunicarse" con la aplicación, en este caso, con el mapa.

En nuestro bookmarklet vamos a hacer uso de dos funciones de la API de Google Maps, gApplication.getMap y GEvent.addListener.

gApplication.getMap obtiene un apuntador al mapa que estamos visualizando mientras que GEvent.addListener permite definir un evento sobre el mapa. En este caso vamos a hacer que cada vez que hacemos click sobre el mapa nos muestra la latitud y longitud en el cuadro de búsqueda, de esta forma, conforme nos vamos moviendo por el mapa podremos ir viendo las distintas latitudes y longitudes donde nos vamos posicionando.

El bookmarklet seria algo así:

javascript: mapa = gApplication.getMap(); GEvent.addListener(mapa, "click", function(marcador, punto) { document.forms(0)("q").value=punto.toString(); }); alert("Al hacer click en el mapa se mostrarán las coordenadas en el cuadro de busqueda");

Lo primero que hace nuestro bookmarklet es definir una variable llamada mapa que hará referencia al mapa que tenemos en pantalla (se inicializa con gApplication.getMap) y después se le indica que cuando se haga click sobre el mapa ejecute una función. El evento "click" del mapa tiene dos parámetors, uno es el marcador donde se hace click (en caso de existir) y el otro el punto donde se ha hecho click, es decir, las coordenadas.

La función que se ejecutará cada vez que se haga click es document.forms(0)("q").value = punto.toString() lo que equivale a decir queremos que el valor de uno de los campos del formulario muestre el valor que tiene actualmente la variable punto y como ya hemos comentado, punto, son las coordenadas que nos interesan. "q" es el cuadro de búsqueda de Google Maps (donde generalmente escribimos que queremos buscar) así que una vez ejecutado nuestro bookmarlet podremos ver algo así


Pienso que esto es bastante más cómodo que tener que estar pulsando sobre el botón "enlazar" y buscando el parámetro ll además, si tenemos este código guardado en nuestros favoritos será muy facil añadir esta funcionalidad siempre que visitemos la página de Google Maps.

miércoles, 26 de mayo de 2010

Publicidad de Toyota en Bones

Desde hace algún tiempo noto que hay algunos dialogos de la serie Bones que no forman parte de la historia sino que más bien parecen spots publicitarios.

Concretamente en el capítulo de hoy, Los huesos en la línea azul (5ª temporada), emitido en LaSexta, Angela y Daisy mantienen una conversación un tanto peculiar dentro de un Toyota Sienna en la que Angela describe las maravillas del coche. Hay bastante más información sobre este curioso diálogo en este blog.

Supongo que esto se ira haciendo cada vez más frecuente en series de televisión ya que también he visto este tipo de publicidad encubierta de Toyota en "The Closer" así que habrá que acostumbrarse a que este tipo de anuncios se cuelen en nuestras series favoritas.

Bookmarklets

¿Que es un bookmarklet? es un pequeño fragmento de código javascript que se suele guardar como un enlace en la carpeta de favoritos para poder utilizarlo con facilidad en cualquier web por la que navegamos de forma que se le da nueva funcionalidad y se pueden automatizar ciertas tareas.

Guardar estos fragmentos de código en la carpeta de favoritos es solamente una forma de tenerlos medianamente organizados ya que no es estrictamente necesario, podemos ejecutarlos directamente desde la barra de direcciones del navegador.





Un bookmarklet clásico es el que se utiliza para eliminar la "protección" con la que algunas páginas intentan que el usuario no pueda acceder al menu contextual que aparece al pulsar el botón derecho del ratón, complicando así que el usuario pueda, por ejemplo, guardar las imagenes que hay en dicha página.

Activar el botón derecho


Pero mi favorito es el bookmarklet utilizado para mostrar los datos de los formularios de la página, incluidos los campos ocultos lo que nos puede descubrir algunos "secretos" de la página.

Mostrar información de los formularios


Y bueno, una vez conocida la información de los formularios nada nos impide modificarlos utilizando javascript desde la barra del navegador para, por ejemplo, modificar el valor de un campo oculto, desactivar el atributo de solo lectura de algunos controles, etc.

domingo, 23 de mayo de 2010

¿Donde esta Wally?

Much@s de vosotr@s recordareis el revuelo que se montó con Wally y compañia en la web de la Presidencia Europea de España 2010 por un fallo XSS.

En el blog Security By Default ya hicieron un seguimiento exhaustivo de esta incidencia y buscarón a este simpático personaje por distintas webs pero es curioso ver como una vez que se calman las aguas Wally vuelve a hacer de las suyas y sigue apareciendo una y otra vez.

En esta ocasión parece que Wally estaba interesado en conocer los canales TDT que se ven en su zona porque me lo he encontrado fisgoneando en Mundoplus.tv


Aunque desgraciadamente no es el único visitante que existe en la web, también nos encontramos con un problema en el acceso a los ficheros que se solicitan por GET!

Problemas con vodafone mail

Si alguno de vosotr@s tiene una cuenta de correo en vodafone sabrá que no es uno de los mejores servicios de correo del mundo ya que es frecuente que tenga algunos problemas tanto de acceso como de spam.

Uno de los problemas más habituales que me he encontrado con esta dirección de correo es que la cuenta tiene un límite de 10 megas pero parece ser que los mensajes estan limitados a 5 megas, es decir, los correos que se reciben no pueden ser superiores a 5 megas pero lo curioso es que, pese a que dicen que no permiten este tipo de correos (tan grandes) realmente si llegan a nuestra dirección de correo y se pueden ver desde la web de vodafone pero si intentamos acceder al correo via POP3 no podremos acceder a nuestros mensajes ya que algunos de ellos (los mayores de 5 megas) bloquean nuestra cuenta.

La solución pense que seria sencilla, entrar en la web y eliminar dichos mensajes que por lo general suelen ser correos en cadena de amigos que nos envian el último powerpoint o cosas similares pero curiosamente no pude eliminarlo ya que la web me daba un error cuando intentaba hacerlo, me decia algo asi como que no se podia eliminar el mensaje porque excedia el tamaño máximo permitido.

¿Que hacer para resolver el problema? pues recurrir a la opción tradicional, acceder a nuestra cuenta de correo por Telnet, para ello hay que abrir una consola (cmd en windows xp) y ejecutar

telnet pop3.vodafonemail.vodafone.es 110

acto seguido nos aparecerá el mensaje de bienvenida del tipo

+OK AUMSI 1.6.2.2 POP3 server ready

nos identificamos con

USER tuemail

realmente no hay que escribir tu email, sino solo lo que aparece a la izquierda de la arroba, por ejemplo, si tu direccion de correo es ajofaifo@vodafone.es solo tienes que escribir ajofaifo.
Si hemos escrito bien nuestro usuario nos aparecerá el siguiente mensaje.

+OK User name accepted, password please

así que le decimos nuestra contraseña para acceder al correo

PASS tucontraseña

el servidor de vodafone nos responderá con

+OK Mailbox ready

ahora podemos pedir la lista de emails que tenemos para ver cual es el que tenemos que borrar (los mayores de 5 megas). Para pedir la lista de correos que tenemos teclearemos

LIST

y vodafone nos mostrará una lista numerada con todos los correos que tenemos que será algo asi como

1 1539
2 5623781
3 2342
.

El primer número es el número de mensaje y el segundo es el tamaño que tiene, en este ejemplo el primero ocupa 1539 bytes, el segundo 5623781 bytes y el tercerlo 2342 bytes. Esta claro que el "grande" es el segundo así que procederemos a eliminarlo de la cuenta ejecutando.

DELE 2

vodafone responderá

+OK message deleted
si hay más mensajes que queramos eliminar volvemos a pedir LIST y eliminamos con DELE el mensaje que queramos. Es importante pedir la lista de mensajes (LIST) ya que los números de mensaje cambian cada vez que eliminamos uno.
Una vez que terminemos de eliminar todos los mensajes que nos molestan finalizamos la sesión de telnet con

QUIT

y el servidor se despedirá de nosotros con un mensaje curioso por parte de vodafone.

+OK Sayonara

Una vez hecho esto ya podremos acceder a nuestra cuenta de vodafone con nuestro cliente de correo POP3 con total normalidad... hasta que nos llegue el siguiente correo grande claro.

Por cierto, como comentaba al principio de este post el correo de vodafone no es de los mejores asi que es muy posible que os desconecte de la sesión de telnet de vez en cuando y os ponga el mensaje "Se ha perdido la conexión con el host" con lo que os obligará a empezar otra vez pero bueno, tarde o temprano lo conseguireis.

Esta es la captura de la sesión completa de telnet.


Si quereis saber la lista de todos los comandos que podeis utilizar con telnet al conectar a una dirección de email, por ejemplo, para leer los correos, podeis consultar la Wikipedia

El acceso por telnet a una cuenta de correo electrónico es válido para cualquier servicio de correo que soporte POP3 no solo para vodafone mail.

viernes, 21 de mayo de 2010

"V" en 7RM

Recien me entero esta mañana que 7RM esta poniendo la nueva versión de la serie "V". Sabia que la estaban pasando en USA y en algunos canales de pago por aqui pero no me habia enterado que también existia la posibilidad de verla en 7RM de forma gratuita. No se, creo que deberian haberle dado más publicidad porque me parece que mucha gente no sabe ni que la ponen asi que ya sabeis, si os interesa la ponen todos los jueves a las 22:00 y la serie original la estan pasando todos los dias a las 19:45.



V (2009)


V: Los visitantes