Ataque de inyección SQL: ¿Qué es?

(Para Alessandro Rugolo)
26/02/24

¿Cuántas veces has oído hablar de la Inyección SQL y te has prometido entender qué es, sin tener el tiempo ni las ganas de hacerlo?

Si tienes tres minutos, intentaré explicártelo, de forma sencilla.

Partamos del nombre: SQLi, Inyección SQL o, completo (en una de las posibles interpretaciones), "Inyección de lenguaje de consulta estructurado" es un tipo de ataque contra la base de datos de una aplicación web que consiste en la ejecución de una consulta maliciosa. Para completar, agrego que SQL es el lenguaje estándar utilizado para interactuar con una base de datos relacional.

Pero ¿qué significa esto? Tu dices. 

Tomemos un ejemplo práctico. Piense en la página web de un sitio de comercio en línea, donde generalmente es posible buscar y seleccionar un producto para comprar. A menudo, puedes ingresar cadenas de texto que incluyan símbolos o caracteres especiales en el cuadro de búsqueda. Bueno, algunos caracteres pueden parecernos inofensivos pero esto no se aplica a la base de datos que los interpreta de una manera completamente diferente.

¿Qué puede pasar si eres víctima de un ataque SQLi?

Desgraciadamente, puede pasar cualquier cosa.

Si los controles sobre posibles consultas a la base de datos son incorrectos (o como todavía vemos, inexistentes) es posible que los datos contenidos en ella sean modificados, eliminados, copiados o incluso cifrados. Pasar de la base de datos a otras áreas del sistema no es difícil, por lo que un atacante con tiempo y un mínimo de recursos y conocimientos de TI puede realmente causar mucho daño.

SQLi es uno de los ataques más conocidos y que aún hoy funciona, principalmente debido a la mala programación de las páginas web en las que, como ya se mencionó, no se realizan las comprobaciones correctas sobre lo que un usuario del sitio puede ingresar como solicitud.

Este tipo de ataque es conocido públicamente desde al menos 1998, gracias al artículo "Vulnerabilidades de la tecnología web de NT" publicado en Phrack por Rain Forest Puppy, seudónimo de Jeff Forristal, hacker y experto en seguridad mundial.

Para saber más:

- http://phrack.org/issues/54/8.html

- https://www.esecurityplanet.com/networks/how-was-sql-injection-discovered/

- https://owasp.org/www-community/attacks/SQL_Injection