miércoles, agosto 20, 2014

Cómo facturé un viaje low cost Barcelona-Sevilla sin pagar la tasa de facturación anticipada

Hoy he tenido lo que se llama una mala / buena experiencia con la web de una conocida compañía de vuelos de low cost y que me recuerda a una serie de divertidos articulo de este mismo blog sobre temas similares. Esta línea aérea, formato low cost, de la que hablo tiene sus ventajas y desventajas que desde mi punto de visto son:

Ventajas:
- Es barata... punto: Lo cual me parece bastante para elegirlos, pues esta la cosa "mu má" como decimos en Sevilla.
Desventajas:
- Equipaje exiguo: una maletita y poco más.
- Tasas muy altas: como no cumplas a rajatabla sus condiciones que algunos usuarios consideran abusivas. Algunas,  como olvidar tu tarjeta de embarque, tienen el coste de 70 pavazos del ala. 
- Viaje incómodo: Te molestan todo el rato en el viaje con publicidad y sorteos absurdos que nadie quiere. Vamos que no te dejan echar una cabezadita.
Por otro lado hay cosas que no sabes si es ventaja o desventaja. Cuando vas a hacer el check-in on-line no te permite hacerlo hasta una semana antes a no ser que les pagues 5 €, en cuyo caso puedes facturar cuando quieras con la única ventaja de elegir asiento. Un momento.... ¿pero esto es una desventaja no?

Pues depende amigo. Si eres desarrollador web y lees El lado del mal, aprendes que todas las validaciones que haces en el navegador, hay que hacerlas en el servidor y mira por donde los programadores de la web de una conocida compañía de vuelos de low cost no lo leen. ¿Serán irlandeses y pensarán que todo lo bueno se escribe en inglés?

En la web de esta compañía "Te pongo la miel en los labios pero paga por ello", para poder acceder al la facturación en línea, te dan dos opciones con un Radio Button justo en el momento en que uno esperaba poder sacar su billete impreso. Las dos opciones son:

Figura 1: Opciones de facturación
- Facturación extendida: con posibilidad de elegir un asiento por 5 € y facturar cuando quieras. 
- Facturación gratuita: que como no haya menos de una semana de por medio esta "disabled" (Esto debe dar una pista los desarrolladores web).
Bien, pues como yo me iba un viernes "pa" Barcelona y volvía a casa casi dos semanas mas tarde, he podido sacar el billete de ida para el viernes de la semana anterior a mi viaje (5 días antes) pero el de vuelta no me deja imprimirlo de forma gratuita por hacerlo con mas de siete días de antelación antes de volver, y me venía mal, pues estaré en Barcelona sin impresora. Además, la verdad, me toca los bemoles que me cobren por imprimir algo que ya he pagado y ¡qué coño! me lo retienen con el chantaje de cobrarme 5 € si quiero imprimirlo antes.

Esto lo hacen aposta para que la gente no vuele tranquila y esté pendiente del billete de vuelta, ¡seguro!. A ver sin nos enteramos compañía de low cost, la gente que vuela con low cost lo hace para pagar menos no para que después de sacar el vuelo ustedes la molesten con este tipo de artimañas y sacarle más pasta.

Es mejor no cabrear en línea a un programador con tiempo y tan tacaño como yo, como hicieron con mi amigo Miguel Ángel en la estafa de "La linterna Molona". Mi tacañería, unida a la curiosidad y a la mala leche que es capaz de provocar las artimañas recaudatorias de esta conocida compañía de vuelos de low cost, ha sido lo que me ha llevado a evitar este chantaje que me parece intolerable.

Pues bien, la herramienta usada para perpetrar este modesto asalto, es un complemento de Firefox que te permite inspeccionar el código HTML de la web y... modificarlo. Además de depurar Javascript, ver las peticiones al servidor, etcétera, que se llama Firebug y que no solo es archi-conocido por pentesters y también está muy extendido entre los desarrolladores web. Hay más plugins similares a éste e incluso ya los navegadores mas modernos traen alguno inspector de código por defecto, pero yo uso este por inercia, pues me gusta como funciona y fue el primero que comencé a usar lo que hace que esté muy familiarizado con sus opciones (nada personal, de veras).

Figura 2: Zonas con opción de disabled. Hay que eliminar varias para activar el Radio Button

En fin, que me enrollo. Cuando llegué a la opción de facturar la vuelta con el Radio Button "de gratis" desactivado hasta una semana antes, se me puso la cara como el emoticon ese del "guasap" que está rojo con cara de cabreado. En ese momento se me ocurrió inspeccionar el elemento desactivado y buscar el TAG de HTML y, dentro de éste, el atributo que impedía marcarlo con el ratón. Borré todo lo que olía a disabled y ... ahí estaba.

Figura 3: Radio Button activado en el cliente de la web

Lo pinché con el editor de Firebug, lo eliminé y "tracatrá" se activó en pantalla y lo podía pinchar con el ratón. Ya había conseguido algo pero lógicamente más o menos sabía que aquello podia pasar pues ya había hecho cosas parecidas durante el desarrollo de páginas web, y lo que esperaba era que la validación en el lado del servidor arruinara mi exaltación. Le di al botón de facturar sin ninguna fe pues "...cómo iba yo a suponer que no se validarían los datos en el servidor en una página web como la de Una conocida compañía de vuelos de low cost que factura millones de euros y tal y tal..."

Figura 4: Realiza la facturación y permite imprimir el billete

Pues nada la realidad es tozuda, no los validó y me dio paso a la página de impresión en PDF y conseguí tener impreso mi billete para volver con la conocida compañía de vuelos de low cost sin pagar un duro, pues me ha permitido imprimirlo sin problemas y facturar gratis con mas de una semana de antelación por no validar lo que el usuario selecciona en el navegador, pensando que jamas se le ocurriría utilizar un inspector de código HTML para modificar las validaciones y restricciones programadas. El asiento es aleatorio pero por lo menos no tuve que pagar los 5 € para imprimir el embarque antes de tiempo.

Figura 5: El billete de regreso impreso.

Señores de la muy conocida compañía de low cost, para su desgracias los lectores de este blog sabemos que cuanto mas grande es una organización, mas grande es la cagada en seguridad y esto no es ninguna tontería, pues si no has gestionado correctamente este problema de validación mínima, ¿Quién me asegura que los datos de "my credit card" no están por ahí en manos de un cibercriminal con mas conocimiento que yo, y con mas mala leche, capaz de encontrar un fallo mas serio que esta pequeña trampa para coger lo que es mío?

Y lo dicho, cabrear a un programador por tratar de cobrarle cositas en línea que es injusto pagar, no es bueno, te puede dejar con el alerón trasero al aire y denunciar lo que puede ser un agujerito, pero que seguro que si un equipo profesional te hace un pentesting, te dejan la cabina al descubierto y con las alas principales a la altura del tren de aterrizaje (vamos, ¡con los calzoncillos bajados!). He pasado bien las vacaciones en Barcelona donde vi a mis colegas que me han invitado a su casa de gorra, y por suerte sin preocuparme de cuándo podría facturar la vuelta.

Quiero dar las gracias a los que como Chema Alonso escribís en los blogs para enseñarnos, porque gracias a ellos he aprendido, modestamente, bastantes cosas de seguridad (... y lo que me queda). Por cierto si alguien quiere visitar mi web y encuentra algún fallo que no dude en decírmelo, pues seguro que tiene algunos, pero al menos no facturo millones y este modesto programador no cobra nada por los servicios que presta, ni almacena datos personales de ningún de sus usuarios.

Saludos!

Autor: José Clemente Agudo Montero
Desarrollador de backend en la web y aplicaciones Android

37 comentarios:

DefToneR dijo...

Muy bueno! Impensable que no se valide! Pero claro eso esta en nuestras mentes de "seguros informáticos", pero en verdad muy pocas veces en la de los programadores.

zhemn dijo...

OooooOOoOoo MY GOD!!!!!!!!!!!!!!!!!!!!!!! Lo mejor es que he podido probarlo porque tenía unos billetes a la espera de imprimir!!!!!!!!!!! Me ha recordado a esa sensación de cuando algún amigo abría "esa foto" que le mandabas por irc. Como dece DefToner, realmente es impensable, lo mismo que es para imprimir eso, es para otra cosa... y catacrack! Saludos!!!

Anónimo dijo...

Mas irlandeses que Ryanair imposible

Unknown dijo...

Muchas gracias!! justo ayer tuve que imprimir las mías, lo único que si que vuelvo en la semana, pero para próximos viajes lo tendré muy en cuenta. Anda que vaya cagada!!
Saludos!!

Cervecero dijo...

Hasta hace unos meses la solución era muchísimo mas sencilla. Cambiando la fecha en el ordenador ya te permitía imprimirlo.

Lo he utilizado muy a menudo los últimos años. Pero desde marzo ya no me dejó usar ese truco.

Anónimo dijo...

Y eres tan tonto que lo publicas, sigue brillando.

Unknown dijo...

¿Esto es hacking ético?

Jc dijo...

Gracias, pronto tendré que dejar de usar el truquillo gracias a tu aportación :p

Lo de siempre, las validaciones en servidor paqué...

Unknown dijo...

Gracias! Ya tengo los billetes así!

Anónimo dijo...

Pero al final...

¿No los validó

o

Nos lo validó?

Porque el significado es completamente el opuesto.

Anónimo dijo...

En parte es cierto lo que dices que te cobran por todo y de manera desorbitada, pero lo de pagar 5 euros por hacer la facturación antes no es ni más ni menos que para que te de la opción de elegir asiento. Si viajas casualmente o haces viajes de menos de hora y media de duración quizás sea algo que no te incomode, pero cuando vuelas regularmente de Dublin a Andalucía, elegir un asiento en ventana y poder echar una cabezadita se agradece.

PD: Eso de que los sorteos no los compra nadie... deberías ver un vuelo de ryanair lleno de irlandeses y británicos a ver si cambias de opinión...

Anónimo dijo...

Algunas cosas que a lo mejor te interesan:

- En cuanto al equipaje, desde hace bastante tiempo puedes llevar otro bulto a parte de la maleta, como en cualquier otra compañía.

- Desde hace algún tiempo también puedes llevar la tarjeta de embarque en el móvil, con lo cual no necesitas impresora.

- Creo que sobre el 30% de los ingresos de Ryanair son debidos a, como tú dices, la molesta publicidad que hacen en el vuelo. Tú renunciarías al 30% de tus ingresos?? no creo...

- No todos los trabajadores son irlandeses, de hecho te diría que hay más extranjeros que irlandeses

- Y lo más importante: si tanto te cabrea, no vueles con ellos, nadie te obliga! paga 100 pavos más por viaje y vuelas mucho más cómodo y te aseguras (o no) de que tus datos personales estarán a buen recaudo por ejemplo en Iberia.

Anónimo dijo...

Vamos a ver, yo no tocaría mucho el código fuente de una aerolínea antes de comprar mi billete no vaya a ser que luego sea un billete no válido y te quedes en tierra, que le estaría bien a más de uno.

Creo que alentar a la gente a modificar estas cosas no tiene mucho sentido y casi casi puede ser delito.

Si no te gustan las condiciones no contrates con ellos.

Anónimo dijo...

Muy bueno, pero quería decir una cosa sobre esta conocida compañía low-cost. A no ser que hayan cambiado mucho las cosas (porque hace algo más de un año que no vuelo con ellos), la facturación se puede hacer entre 15 días y 4 horas antes de la salida del vuelo, no siete días. Y si se te olvida imprimir el billete no te cobran 70€ (era menos de eso antes aun así), de hecho nosequé resolución de la UE obligó a la compañía a dejar de cobrar esa cláusula por ser abusiva. Y de hecho ahora te dejan llevar una segunda maleta de mano.

Fernando F. Gallego dijo...

En Iberia te cobran por elegir asiento a la hora de facturar. Te asignan uno aleatorio y si eliges otro, te cascan unos euros, cantidad dependiendo del vuelto.
Pues nada lo eliges, lo eliminas con el icono de papelera que sale al lado de la selección... y el asiento no se resetea al que te habían dado, así que reservé asiento sin pagarlo :D

Anónimo dijo...

Hay muchos comentarios que aclaran varios puntos, como el hecho de que pagas por elegir asiento, no por facturar previamente, y la actual obsolescencia de la clausula de pago por olvidar la tarjeta por ser ilegal dentro de la EU. Tambien se gano en un juicio el tema de que no admitian el libro de familia como identificacion, la identificacion innecesaria en vuelos nacionales, etc.

A mi me parecia una compañia decente si hacemos una media (no me hagas hablar de otras que no son low-cost pero si son poor-service) y creo que las reclamaciones se hacen a traves de las autoridades competentes, no haciendo ingenieria inversa. De esta forma ganamos todos.

Me fastidia la publicidad mala que ha tenido porque ahora los billetes son mucho mas caros. Es la unica compañia que me sirve desde la ciudad donde vivo (que no esta en España, por suerte). Efectivamente: es barata porque no te da ciertos servicios. Que yo no quiero. Si los quieres, los pagas. Asi que no es que te intenten cobrar por todo: solamente pagas lo que quieres. Cuando la gente entienda esto, entendera que es volar en low-cost.

Anónimo dijo...

@DefToner: "Impensable que no se valide! Pero claro eso esta en nuestras mentes de "seguros informáticos", pero en verdad muy pocas veces en la de los programadores."

Soy programador y, para serte sincero, también está en mi mente y en la de la mayoría de mis compañeros. Sigue la cadena y sabrás en qué mente falta :P

Fernando Cordero dijo...

Probablemente los que cierran presupuestos para el desarrollo del software de la compañía sólo han analizado los presupuestos low-cost.

Y esto es el pan nuestro de cada día y no es exclusivo de este tipo de compañías. Siempre hay un listo-tonto por las altas jerarquías al cual lo de validar en ambos lados le suena a redundancia, luego es hacer el trabajo 2 veces, y por tanto se ahorran 'recursos' si de un plumazo los quitamos de las especificaciones.

Cuando se ajustan tanto los costes de desarrollo y las decisiones finales las toman personas que no tienen ni idea de lo que hay detrás y sólo ven lo que les cuesta, corres el riesgo de que te hagan goles por la mitad de la portería, porque ni portero tienes.

Y si en alguna parte alguien especificó que la validación tendría que ser hecha también en el servidor, probablemente ese alguien no fue quien decidió qué oferta ganaba el desarrollo, o su opinión no se tuvo en cuenta, o bien -irónicamente- se olvidó de validarlo posteriormente. Pero que conste que esto no pasa solamente con las low-cost.

Anónimo dijo...

JaJa... patético... siempre hago las validaciones en BACKEND, el que quiera hacerlas en el FRONTEND alla el!

Hace unos años trabajo en una empresa que hace todas las validaciones en FRONTEND, los "genios" encargados de dirigir los proyectos justifican esto diciendo que así se eliminan cantidades innecesarias de peticiones a los servidores... yo me rio en sus caras, ya son varias la veces que les he demostrado como desmontar todo el tinglado de "seguridad" y "validaciones" con 3 clicks. ¿pensáis que algo ha cambiado?, lo que mas me jode es que esa peña es la que mejor pagada está!

El novato dijo...

Me considero un novato aún en el mundo del desarrollo web (y de seguridad, ni os cuento), pero hasta yo valido esas cosas...

Es que la pela es la pela. Y en esos temas tienes que validarlo todo...

Anónimo dijo...

Klondike, no hace falta saltar filtros, no tiene, ese XSS se puede hacer directamente jaja, es un fallo gordo

Anónimo dijo...

Muchas gracias por esto! Muy útil, ya que tenia que estaba también en la situación de no poder facturar hasta haber estado ya en el destino, lo que siempre es un engorro... Así, ahora a disfrutar de las vacaciones sin preocupaciones!

Pero si que es cierto que es un fallo impensable en una compañía que maneja tantos usuarios....


Un saludo!

Anónimo dijo...

Funciona!!!! acabo de facturar para mediados de Septiembre!!!! La pena es no poder elegir los XL (asigna justo los siguientes, los primeros gratuitos)

asdrians dijo...

Que crack, lo acabo de hacer y VOILÁ! asientos correlativos para los tres que somos en el vuelo (se ve que asigna por orden), lo que nos ha venido de perla ya que pensábamos que ibamos a ir separados los unos de los otros.

Que vivan los bugs!

Anónimo dijo...

Lo mires por donde lo mires. informática. debería hacer en su web algo tan sencillo como validación de campos, lo mires por donde lo mires.

Creo que es una compañía suficiente grande y tiene suficientes clientes para controlar la seguridad de los mismos. No creo que les suponga mucho pagar una web en condiciones pero a un cliente si que le puede suponer mucho que accedan a sus datos.

Hablo como usuarta, no como informat
Muy poco profesional Ryanair.

Jose C. dijo...

Bueno veo que la gente ha hecho los deberes y me han advertido de un error en la página. Gracias a David Maseda por avisarme.

Anónimo dijo...

Como ya dijeron antes, es una majadería jugar con eso y una irresponsabilidad.

Si se les da por hacer un repaso de quién ha facturado antes de tiempo y quién no ha pagado (simple de hacer), no es que no os permitan volar, es que es un delito que habeis hecho, os pueden empapelar y con razón.

Me parece una temeriadad además ir a publicarlo a una web como esta que tiene bastante tráfico, con lo que puede que hagan algo, supongo que mereceis un puro.

Y para Chema, el otro día hablabas de que el blog iba a cambiar, pero no sabía que se iba a convertir en un clon de Zone-H por permitirle al señor José Clemente Agudo Montero publicar este artículo en tu blog, totalmente fuera de lugar. Pienso que así incluso se puede llegar a alentar a cometer delitos, porque esto lo es.

La redacción tiene un tufillo a burla y menosprecio, casi adolescente diría yo. El fallo de no comprobar los datos en el servidor es algo tan habitual que no aporta nada técnico, aunque sea una cagada gorda y común. La forma de explotarla es tan sencilla que cualquiera puede hacerlo.

Resulta además que en este caso el único que sale perjudicado es la propia empresa, ya que con lo que aquí se muestra, sólo se obtiene una forma de eludir el pago, no hay evidencias de compromiso de datos de terceros ni incluso de la propia compañía, lo que me hace pensar en un afán de notoriedad y egocentrismo del autor y no una denuncia contra un error que puede afectar a otros usuarios.

No sé si hacer algún comentario sobre las figuraciones que tiene el señor José Clemente Agudo Montero de si será una web segura o no, porque no aporta ninguna prueba, simplemente humo.

Y por último, ¿en qué quedó aquello del responsable disclosure? Si habías intentado incluso hacer un proyecto... muy preocupado estabas entonces y ¿ahora esto? Es totalmente irresponsable disclosure, creo que has fallado con esto hoy.

Saludos.

Anónimo dijo...

Hay quien ve la paja en el ojo ajeno y no la viga en el suyo.

Si se dedicar a tener sus responsabilidades en orden no tendría tiempo de trastear con webs de otros y no le meterían un burdo XSS que sí podría tener peligro para sus usuario, no como lo que él publica, que sólo perjudica a la propia empresa.

Esto una chapuza.

Anónimo dijo...

Gracias! Me voy a España en 3 días y me vuelvo en 3 semanas, me ha venido de perlas y me ha funcionado perfectamente! :D

Sampy dijo...

Jajaja muy bueno.

Caro chan dijo...

jejejejeje

Yo trabajé para esa compañía que no podemos mencionar y son lo mas dodgy del planeta...no me extraña lo más mínimo....XDDD

Anónimo dijo...

Bueno, ahora me explico por qué en Irlanda los sueldos de los desarrolladores han bajado en los últimos años... Fallo de muy novato y sin supervisión (aunque en una empresa en la que estuve hace tiempo había un ingeniero que también decía "no hagas validación en ambos lados, con el cliente llega...", pero era un tipo con opiniones "peculiares").

Por cierto, dos puntos sobre la web de la lotería que estás desarrollando:

a)¿No debería tener aviso de cookies?
b)¿La funcionalidad de buscar números no está implementada ya en la web oficial de Loterías del Estado?

klondike dijo...

Yo no me llamo David Maseda y usted, José C. acaba de faltarme al respeto al no reconocer mi investigación. Usted no proveyó otra forma de contactarle para avisarle de su XSS que los comentarios de este post (mire su web si no me cree).

Pero no se preocupe que de todo se aprende, la próxima que encuentre en algún sistema relacionado con usted en vez de publicarla para que pueda corregirla la venderé.

Adama dijo...

@klondike yo he interpretado que te lo agradecía y que el tal David Maseda es el que le ha avisado de lo que habías publicado, no que seas tú.

Un saludo

Jose C. dijo...

No se enfade nadie que, yo no estaba leyendo los comentarios y David Maseda contacto con Chema que le dio mi correo.

Gracias a todos

Anónimo dijo...

ESTO YA NO FUNCIONA HIJOS DE PERRA

Anónimo dijo...

Lo han arreglado. Ahora valida en servidor en el botón Facturación al final del trámite. Una lástima porque era muy divertido! :D

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares