martes, 4 de diciembre de 2012

Vulnerabilidad implementacion IPN de paypal por algunos desarrolladores

En Internet existen muchas paginas que usan mecanismos de pagos automáticos para ofrecer a sus clientes comprar online en tiempo real, hoy les hablare de IPN de paypal, muchos desarrolladores han implementando este mecanismo en sus proyectos, pero el problema radica que si no se sabe implementar de forma adecuada pueden ser victimas de algunas personas con conocimientos básicos de como funcionan estos servicios.
El fin de este post no es enseñarles a robar ni obtener algún beneficio económico de esta vulnerabilidad (La vulnerabilidad no es de paypal sino de los desarrolladores que implementan estos servicios sin saber como funcionan correctamente) sino enseñarles como podemos protegernos y hacer desarrollos mas seguros con este servicio.
Lo primero que voy a hacer es mostrarle un gráfico donde se explica de forma sencilla como seria el ataque y como se aprovecharía un intruso de la vulnerabilidad.

Para el laboratorio necesitamos:
Para realizar la prueba realizamos los siguientes pasos.
1. Encontramos un sitio web que implemente los pagos de algun producto mediante el boton “pago rapido”, casi siempre son sitios web que venden créditos online o solo un producto.

2. Desde nuestro firefox en la barra de herramientas tenemos una nueva barra (Web Developer) hacemos clic en Formulario > Mostrar detalle formulario

El campo que nos interesa se llama “business” como podemos ver este campo tiene el email donde se enviara el pago, lo que hacemos es editar y meter el email de una cuenta paypal que nos pertenezca o de un amigo.
3. Realizamos los pasos normales de la compra y seremos enviados a la pagina de paypal para proceder con el pago.

4. Realizamos el pago en paypal con nuestra cuenta de paypal 2.
5. Paypal procesara el pago correctamente y notificara al servidor de la tienda que el pago fue realizado.
6. El servidor procesara el pago y enviara el articulo (que por lo general es digital) a la cuenta del usuario que realizo la compra.
NOTA: Como podemos observar todo el proceso del pago en paypal fue correcto, se debitara de la cuenta de paypal1 el saldo y se enviara a la cuenta de paypal2, es decir el dinero lo movimos entre 2 cuentas de nosotros, ya que nunca llego el dinero a la cuenta oficial de la tienda.
¿Cuando se presenta esta vulnerabilidad? 
Cuando el desarrollador no valida el email al cual se realizo el pago en el archivo que recibe la notificacion del IPN de paypal.
En este articulo se muestra una forma segura de implementar pagos paypal instantáneos para los desarrolladores que trabajan con PHP (http://www.micahcarrick.com/paypal-ipn-with-php.html)
Después de ver este articulo se podrán dar cuenta que necesitamos hacer muchas validaciones antes de procesar un pago, ya que podemos cambiar el tipo de moneda para pagar, el valor del articulo que estoy comprando, etc.. se que a muchos se les ocurrirán muchas otras ideas.
Como siempre, espero que les sea de mucha utilidad.

1 comentario:

  1. Muy buen aporte, hay que tener en cuenta que todas estas vulnerabilidades son partes de las actualizaciones que han surgido.

    Visita https://www.innobit.mx/

    ResponderEliminar