jugando con códigos de barras

Jugando con códigos de barras

Hace un tiempo, por casualidad, encontré la web irongeek, donde se habla de la inyección SQL empleando códigos de barras como método de entrada de datos.

Implementación

Los códigos de barras se están implementando en muchos sistemas para introducción de datos a sistemas de forma rápida. Se usan por ejemplo en parkings públicos, servicios de sharing de bicicletas, registro de clientes en hospitales, etc … es una tecnología relativamente fácil de implementar.

Finalmente, e independientemente del servicio o implementación, el código de barras es un método de introducir datos a un sistema informático. Siendo así, si no se han aplicado las medidas necesarias es posible enviar al sistema caracteres, sentencias, o códigos inesperados por el programa que nos permitan obtener información o provocar errores en el sistema.

En el siguiente esquema, simplificando mucho se muestra la implementación habitual de un sistema de código de barras.

Desarrollo de la herramienta

Los sistemas de códigos de barras pueden ser vulnerables a las inyecciones SQL, ya que en la mayoría de los casos estos se emplearán para registros o consultas a bases de datos.

Para facilitar los test necesarios para verificar la seguridad de dichos sistemas me aventuré a desarrollar una pequeña aplicación para android. Podéis encontrar el código en mi github y podéis descargar apk. La aplicación está desarrollada con ionic, por lo que es posible compilarla tanto para ios como para Android, aunque yo solo la he probado con el segundo.

Barcode injection

La aplicación intenta facilitar tres funciones básicas para la realización de pruebas con códigos de barras.

  1. Almacenado de la información:

Escanea, identifica el tipo de código y lo almacena para su posterior uso.
Deslizando el código hacia la izquierda podremos llegar a las opciones, eliminar, fuerza bruta, visualizar.
 

  1. Inyección de códigos conocidos:

Dispone de un banco de códigos obtenidos de la página de irongeek con los que probar inyecciones “standard”.
Es posible modificar el tipo de código que queramos imprimir en pantalla.

  1. Fuerza bruta

Apartado donde es posible configurar mutaciones simples en el código para la realización de ataques de fuerza bruta.

Espero podáis verificar la seguridad de vuestras implementaciones de códigos de barras con la herramienta. Tened en cuenta también que se ha realizado de un modo muy pragmático, sin la intención de publicarla, de entrada, por lo que contiene algún error que no ha sido corregido.
Si alguien se anima a mejorarla puede contactar conmigo mediante el formulario de contacto.

Hasta aquí el post de hoy. Espero haya sido de vuestro interés.
No dudéis en contactar mediante el formulario para hacerme llegar vuestros comentarios.