Inyeccion SQL
Inyeccion SQL
Una inyección SQL es una vulnerabilidad categorizada como crítica, la cual permite a un atacante
inyectar sentencias SQL a través del(los) input(s) de un aplicativo web. Esta vulnerabilidad se
puede producir automáticamente cuando un programa "arma descuidadamente" una sentencia
SQL en tiempo de ejecución, o bien durante la fase de desarrollo, cuando el programador explicita
la sentencia SQL a ejecutar en forma desprotegida. En cualquier caso, siempre que el programador
necesite y haga uso de parámetros a ingresar por parte del usuario, a efectos de consultar una
base de datos; ya que, justamente, dentro de los parámetros es donde se puede incorporar el
código SQL intruso. Para entrar en detalle de cómo funciona esta vulnerabilidad pondremos el
siguiente ejemplo:
En la imagen anterior es posible observar un claro ejemplo de una inyección SQL, aquel input
genera consulta a la base de datos del sistema, sin embargo si se agrega una comilla simple nos
podemos percatar que se genera un error SQL, el cual hace referencia al motor de base de datos
Mysql. Este error se produce porque la aplicación no sanitiza caracteres especiales, y en base a los
errores que devuelve la aplicación es posible inyectar sentencias SQL. También existen las
inyecciones SQL ciegas, estas inyecciones se caracterizan por no mostrar un error directamente en
el aplicativo web, si no que producen cambios (alteraciones) distintos, como por ejemplo hacer
que un botón o un checkbox aparezca en otro lado del sitio web, etc, también es posible que
respondan a una inyección basada en tiempo, el cual hace que el sitio web sea pausado por una
cierta cantidad de tiempo, veamos un ejemplo de este tipo de inyección: