¿Qué es?
La Inyección SQL (SQLi) es una vulnerabilidad de seguridad web que permite a un atacante interferir con las consultas que una aplicación hace a su base de datos.
Básicamente, ocurre cuando una página web permite que datos introducidos por un usuario (en formularios, URLs o buscadores) se conviertan en parte de un comando SQL sin ser filtrados, permitiendo al atacante "hablar" directamente con la base de datos.
El Funcionamiento:
Desde la vista del Atacante:
Para el atacante, la web es un campo de pruebas. El proceso suele ser:
Sondeo: Busca campos de entrada (como un login) y escribe caracteres especiales como una comilla simple ('). Si la web devuelve un error de base de datos, sabe que es vulnerable.
Inyección: Introduce comandos lógicos. Por ejemplo, en el campo de usuario escribe: ' OR 1=1 --.
Explotación: Como 1=1 siempre es verdadero, el atacante logra entrar al sistema sin conocer ninguna contraseña o, en casos más graves, extraer tablas enteras de información confidencial.
Desde la vista de la Víctima (El Servidor):
El servidor de la víctima es "demasiado confiado". Cuando recibe el texto malicioso, no lo ve como un simple nombre de usuario, sino como una instrucción:
La lógica: El servidor dice: "Busca un usuario donde el nombre sea vacío O donde 1 sea igual a 1".
El resultado: Al ejecutar esta orden, la base de datos devuelve el acceso al primer usuario que encuentra (normalmente el administrador), entregando las llaves del reino al atacante sin que este haya disparado ni un solo aviso de "contraseña incorrecta".
Un Caso Real: El desastre de TalkTalk (2015)
Uno de los casos más sonados en Europa fue el ataque a la proveedora británica de telecomunicaciones TalkTalk. Un grupo de atacantes aprovechó una vulnerabilidad de SQL Injection en su página web para acceder a los datos de sus clientes.
Impacto: Se robaron los datos personales de casi 157,000 clientes, incluyendo nombres, direcciones y números de cuenta bancaria.
Consecuencia: La empresa fue multada con una cifra récord en su momento (£400,000) y perdió más de 100,000 clientes en pocos meses debido a la pérdida de confianza. Lo más impactante fue que el ataque fue realizado por adolescentes.
Curiosidades de la Inyección SQL
El primer registro: Fue documentado por primera vez en diciembre de 1998 por el investigador Jeff Forristal. Curiosamente, cuando intentó advertir a las empresas sobre este riesgo, muchas ignoraron el problema diciendo que no era algo serio.
El nombre más peligroso: Existe una anécdota recurrente sobre una madre que llamó a su hijo "Robert'); DROP TABLE Students;--". Es una referencia a un famoso cómic (XKCD) que ilustra cómo un nombre de pila podría borrar una base de datos entera.
Inyecciones a ciegas (Blind SQLi): A veces la web no muestra errores, pero el atacante puede "adivinar" la información haciendo preguntas de "sí o no" (por ejemplo: "¿La primera letra de la contraseña es la A?"). Si la página tarda un segundo más en cargar, el atacante sabe que ha acertado.
A continuacion te dejo un video que explica a la perfeccion de una manera mas grafica como funciona el ataque de SQLi.