Saltar al contenido principal

Inyección SQL - Cómo los atacantes explotan bases de datos

Lectura de 2 min aprox.

La inyección SQL (SQL Injection) es una técnica de ataque que inserta sentencias SQL maliciosas en los formularios de entrada de una aplicación web para manipular la base de datos de forma ilícita. Es una vulnerabilidad extremadamente peligrosa que puede llevar a eludir la autenticación, robar, alterar o eliminar datos, e incluso tomar el control del servidor. Ha figurado entre los primeros puestos del OWASP Top 10 durante muchos años y, en 2024, los ataques de inyección siguen considerándose una categoría de amenaza importante.

Casos de uso reales

«Durante una prueba de penetración, al insertar UNION SELECT en el parámetro de consulta de la función de búsqueda, pudimos obtener todos los registros de la tabla de usuarios. Estamos abordando como máxima prioridad la migración a consultas parametrizadas.»

El flujo de la inyección SQL

Introducir SQL malicioso
El servidor ejecuta el SQL
Se obtienen datos de la BD de forma ilícita
Filtración de información / manipulación

Cómo funciona el ataque

Los programas que incorporan la entrada del usuario directamente en las sentencias SQL se convierten en objetivos de ataque. Por ejemplo, al introducir «' OR 1=1 --» en un formulario de inicio de sesión, un atacante puede eludir la autenticación, o usar una cláusula UNION para obtener datos de otras tablas. Con la inyección SQL a ciegas (blind SQL injection), aunque no se muestre ningún mensaje de error, se pueden inferir los datos a partir de las diferencias en las respuestas verdadero/falso. libros sobre defensa frente a la inyección SQL (Amazon) permiten aprender sobre el tema en detalle.

Escenarios de daño concretos

Un error común es pensar que «la inyección SQL es una técnica de ataque antigua que no ocurre en los sistemas modernos». En realidad, todavía se encuentra código que construye SQL mediante la concatenación de cadenas sin usar consultas parametrizadas, incluso en la modernización de sistemas heredados y en el desarrollo nuevo. También en 2024 se reportaron casos de millones de registros de clientes filtrados desde las bases de datos de grandes empresas mediante inyección SQL. Dado que los atacantes usan herramientas automatizadas (como sqlmap) para buscar sitios vulnerables de forma eficiente, incluso los sitios pequeños se convierten en objetivos.

Preparación como usuario

La inyección SQL es una vulnerabilidad del lado del servidor, pero los usuarios también deben estar preparados. Si estableces una contraseña única y aleatoria para cada servicio, aunque ocurra una filtración de datos en uno de ellos, tus demás cuentas seguirán seguras. Si un servicio que utilizas anuncia una filtración de datos, cambia tu contraseña de inmediato. libros sobre protección de datos (Amazon) también son una referencia útil.

Términos relacionados

¿Te resultó útil este artículo?

XHatena