Lo que sé sobre los productos POS que revendo / apoyo, al tomar una tarjeta de crédito para un pago, hay un número de caracteres que está buscando.
En un sentido general, está buscando algo como esto:
- 16 dígitos para Visa / Mastercard / Discover
- 15 para Amex (solo usará Visa / MC / Discover, por ejemplo)
- 4 dígitos para el vencimiento
- código de seguridad de 3 dígitos
Por lo tanto, el sistema desea los datos en este formato
[Card number][Expiration][Security Code]
Hay otra información en la banda, pero solo se trata de ilustrar un ejemplo simple.
Además, no menciono las tarjetas astilladas, solo en referencia a las antiguas tarjetas de banda magnética, por ejemplo.
Entonces, digamos que mi sistema POS espera 23 dígitos (16 + 4 + 3) y hago una tarjeta falsa con una impresora de tarjetas. Tengo uno justo a mi lado en mi escritorio. Sin embargo, me equivoco en mi orden de información.
En lugar de [Card number][Expiration][Security Code]
Yo hago
[Security Code] [Card number] [Expiration]
El sistema aún tomaría la información que he dado, pero lo más probable es que regrese con un mensaje similar a "número de tarjeta no válido".
Así que rehaga mi tarjeta falsa con el orden correcto de información. Vaya a una tienda, pruebe la tarjeta y funciona bien.
Decide incluir mi carga útil al final de la tarjeta. Pensé que una de dos cosas sucedería:
-
La tarjeta pasaría normalmente, el sistema tomó los 24 dígitos que buscaba y los envió a la compañía de tarjetas de crédito para su autorización.
-
El POS no aceptaría la tarjeta ya que la cantidad de dígitos en las bandas magnéticas no coincidía con el conjunto estándar.
En # 2 he visto que sucede en la naturaleza. Una cadena de tiendas que mi empresa apoya está al lado de una gran universidad. La universidad entrega tarjetas de identificación, pero también son una tarjeta de crédito para el uso de los estudiantes. Pueden usar la tarjeta para comprar cosas y obtener servicios (echa un vistazo a los libros y demás) en la Universidad.
Las tarjetas de banda magnética tienen hasta 3 pistas de información. Dos pistas se utilizan para una transacción de tarjeta de crédito. Se puede utilizar una pista, pero el comerciante paga una tarifa adicional, ya que no fue una transacción "pista 1 y pista 2".
Después de las llamadas frecuentes de los propietarios de las tiendas con el problema de "las tarjetas universitarias XXXX no funcionan, a menos que las ingresemos manualmente", fui a la universidad y me dejaron ver una tarjeta y deslizarla para ver cómo aparece la información. Se estaba poniendo en la banda magnética. Fueron rechazados un poco por mi solicitud, pero entendieron el problema e hice mi prueba delante de ellos después de que un equipo de informática de la universidad me observara.
Estaban poniendo información de identificación de estudiante en la Pista 3 de las tarjetas. Por lo tanto, el sistema POS que admito estaba leyendo la pista 1, la pista 2 y la pista 3 y no aceptaba la tarjeta porque tenía demasiada información.
Para solucionar el problema, los MSR (lectores de banda magnética) en las tiendas que tuvimos que programar para que no leyeran la información de la Pista 3.
Esa fue mi experiencia con un producto POS. Hay cientos de productos POS, y supongo que sería una práctica estándar aceptar solo el número de dígitos "X".
Si esto fuera una posibilidad, creo que el punto "débil" sería la pasarela de pago que envía la información de la tarjeta al banco para su aprobación.
Computadora de punto de venta ---- > Pasarela de pago ---- > Banco del titular de la tarjeta
La pasarela de pago establece la sintaxis de cómo quieren que los datos lleguen a ellos.
Puede que les guste una forma diferente a mi ejemplo de
[Card number][Expiration][Security Code]
Entonces, si pensamos en explotarlo, creo que de forma similar a un ataque de inyección de SQL, la pasarela de pago sería donde buscar. Los PG son sistemas bastante robustos, por lo que me imagino que no tolerarían nada que no sea NO en su sintaxis.