¿Qué es la inyección SQL y cómo proteger tu web ante este ataque?

Cerrando las puertas

Tener una página web te permite llevar a tus clientes al lugar más adecuado para satisfacer sus necesidades, ofreciendo productos o servicios que encajen en lo que están buscando a través de Internet. Sin embargo, en el vasto mundo de los negocios online, no todo es lo que parece.

Como ya hablamos en su día, toda ley tiene su trampa, y en Internet también vale todo, para nuestra desgracia. Existen diversas amenazas informáticas que pueden fastidiarte el día, o incluso tumbar por completo tus aspiraciones de montar una empresa.

Hoy echamos un vistazo en profundidad a los ataques por inyección SQL, una vulnerabilidad que puede modificar o eliminar datos de tu web, o directamente hacerse con el control total de la misma.

¿Qué es la inyección SQL?

Antes de nada, hablamos de qué es SQL. Structured Query Language, por sus siglas en inglés, es un lenguaje utilizado en programación que sirve para administrar y recuperar información que está recogida en un sistema de gestión de bases de datos relacionales.

A grandes rasgos, es un lenguaje que se gestiona a través de cuatro operaciones básicas denominadas CRUD (Create, Read, Update y Delete, es decir: Crear, Leer, Actualizar y Borrar). Además, existen otras cuatro instrucciones para hacer tareas, cada una asociada a una de las operaciones indicadas antes:

  • INSERT, para insertar filas en una tabla, correspondiéndose con la “C” de CRUD.
  • SELECT, para mostrar información sobre los datos almacenados en la base de datos, buscando en una o más tablas, según sea necesario. Se corresponde con la “R”.
  • UPDATE, con la que podremos actualizar información de una tabla. Viene a ser la “U”.
  • Por último, DELETE, que permite borrar filas de una tabla, siendo obviamente la “D”.

Imagen del bloque motor de un coche al descubierto

Con esto, podemos hacer una consulta SQL, es decir, solicitar que se realice algún tipo de acción sobre una base de datos. La más habitual (y por la cual es posible que alguna vez te ataquen) es saber el nombre de usuario y la contraseña de acceso a la administración de una página web. Los hackers saben cómo acceder a estos procesos de introducción de datos y pueden, al igual que el los inyectores de un motor le llevan combustible, introducir código malicioso en tu base de datos para recabar toda la información que quieran.

Si consiguen entrar en tu web, pueden manipular toda la información que alojes a su antojo. Pueden hacerse con datos confidenciales, como números de la Seguridad Social, datos de tarjetas de crédito o información sobre contabilidad de las empresas.

Dado que un ataque por inyección SQL puede afectar a cualquier web con una base de datos SQL, tiene como “ventaja” que al ser tan conocido este ataque es combatible y prevenible, aunque si consiguen acceder una vez será muy difícil quitarse de encima a tus atacantes, puesto que sabrán cómo volver a intentar tomar el control de tu web. Por si fuera poco existen varias aplicaciones que trabajan de forma automática, ahorrando recursos a los ciberdelincuentes y facilitándoles la tarea.

Otro problema recurrente en este tipo de ataques es que no es fácil detectarlo hasta que se ve claro el robo cometido, sobre todo cuando no se tiene experiencia y no está claro saber qué base de datos han atacado.

¿Es posible eliminar el ataque de nuestras bases de datos?

El objetivo real de una inyección SQL se centra en atacar páginas web, dejando en segundo plano el objeto que se ha usado para acceder a dicha web. Por tanto, si se quiere eliminar este problema, es necesario actuar cuanto antes en la propia página. Una forma fácil de evitar males mayores es cambiar la información de inicio de sesión regularmente, o directamente no utilizar la misma contraseña en distintas bases de datos.

Para las páginas web hechas en WordPress, los desarrolladores que trabajar desinteresadamente para este CMS han dado el callo al máximo con el objetivo de minimizar los riesgos de este ataque.

Una recomendación: realiza tareas de mantenimiento y actualización, que van desde la creación de copias de seguridad donde guardes tus datos más relevantes, tener WordPress siempre actualizado a la última versión disponible, o hasta instalar plugins de seguridad como Wordfence que ayuden a escanear archivos y eliminar vulnerabilidades.

Otros ajustes que puedes hacer en caso de tener WordPress consisten en proteger los archivos .htaccess, wp-config.php y proteger también las carpetas wp-content y wp-admin.

Cómo funciona un ataque por inyección SQL

Una inyección SQL empieza casi siempre cuando la persona que quiere entrar en tu web introduce su código malicioso en un formulario de acceso que tengas habilitado, por ejemplo, el clásico formulario de nombre de usuario y contraseña, o cuando envías por correo electrónico la contraseña a un cliente para que éste la ponga en la web y se inicie una búsqueda en la base de datos. Si no aparece esa cuenta de correo no habrá envío de contraseña, pero si aparece sí se enviará la nueva contraseña o la información necesaria para activar o restaurar la cuenta de tu cliente.

Para que actúe el código malicioso, en lugar de usar una cuenta de correo válida lo que se busca es colar las líneas de texto en SQL que sepa encontrar la información deseada, bien para modificar determinados datos o directamente eliminarlos.

Un comando estándar de búsqueda en SQL sería el siguiente:

SELECT data FROM table WHERE email = '$email';

En este punto, antes de iniciar el ataque, el hacker necesita conocer sí o sí cómo la propia aplicación gestiona los errores a la hora de introducir los datos en los campos. Una vez analizado este comportamiento con el correo electrónico, puede también que se eliminen aquellos caracteres no reconocidos (comillas, guiones, etc.) antes de buscar el dato requerido, o bien directamente que no se elimine nada, haciendo la búsqueda en bruto.

Llegado el caso se producirá un error de sintaxis, que en función de la aplicación que utilices para tu web gestione estos errores los mostrará o no, pero si los muestra se verá un mensaje del estilo Internal Error.

De todos modos, si quieres ver más ejemplos, Google es tu amigo. Hay innumerables páginas web con modelos claros, como el proyecto OWASP, cuyo organismo matriz (la Fundación OWASP) es una organización sin ánimo de lucro que ayuda a publicar toda información práctica e imparcial sobre seguridad en la red y de las aplicaciones informáticas.

Conclusión

La seguridad lo es todo en tu negocio, más cuando cualquier con un mínimo de conocimiento te puede destrozar todo el esfuerzo depositado. Nunca está de más cubrirse las espaldas, proteger todos tus archivos con las medidas necesarias y, si hiciese falta, contactar con un profesional que analice y controle todos los puntos débiles de tu página web.

No olvides también que, si echas un vistazo a los productos de seguridad web de GoDaddy, podrás darle un plus en materia de protección mostrando que tienes una web de confianza con un SSL o eliminando malware de tus archivos.

Imagen de Unsplash