Inyección de SQL
Inyección de SQL
Una consulta de SQL es una solicitud enviada a una base de datos por algún
tipo de actividad o función, como consultas de datos o una ejecución de código
SQL que se debe realizar. Un ejemplo es cuando la información de inicio de
sesión se envía a través de un formulario web para que el usuario pueda
acceder al sitio. Normalmente, este tipo de formulario web está diseñado para
aceptar solo tipos muy específicos de datos, como un nombre o una
contraseña. Cuando se agrega esa información, esta se coteja contra una base
de datos y, si coincide, se otorga acceso al usuario. Si no coincide, se niega el
acceso.
Signos de SQLi
Es posible que un ataque de inyección de SQL exitoso no muestre ningún
signo. Sin embargo, a veces hay algunas señales externas, como las
siguientes:
SQLi en banda:
Este tipo de ataque SQLi es sencillo para los atacantes, porque usan el mismo
canal de comunicación para lanzar ataques y obtener resultados. Este tipo de
ataque SQLi tiene dos subvariantes:
SQLi basado en errores: la base de datos genera un mensaje de error por las
acciones del atacante. El atacante obtiene información sobre la infraestructura
de la base de datos en función de los datos que generaron estos mensajes de
error.
SQLi basado en unión: el atacante usa el operador UNION SQL para obtener
los datos deseados mediante la fusión de varias declaraciones Select en una
única respuesta HTTP.
SQLi inferencial (también conocida como inyección de SQL ciega):
Este tipo de ataque de SQL se puede llevar a cabo en las siguientes dos
situaciones:
Cuando los atacantes no pueden usar el mismo canal para lanzar el ataque y
compartir información; o
cuando un servidor es demasiado lento o inestable para realizar estas
acciones.
Exponer datos sensibles. Los atacantes pueden extraer datos, lo que pone
en riesgo la exposición de datos sensibles almacenados en el servidor SQL.
Comprometer la integridad de los datos. Los atacantes pueden alterar o
eliminar información del sistema.
Comprometer la privacidad de los usuarios. En función de los datos
almacenados en el servidor SQL, un ataque puede exponer información
sensible del usuario, como direcciones, números de teléfono y detalles de
tarjetas de crédito.
Otorgarle al atacante acceso de administrador al sistema. Si un usuario de
la base de datos tiene privilegios de administrador, un atacante puede acceder
al sistema a través de un código malicioso.
Otorgarle a un atacante acceso general a su sistema. Si usa comandos
SQL débiles para verificar nombres de usuario y contraseñas, un atacante
podría acceder a su sistema sin conocer las credenciales del usuario. De esta
forma, el atacante puede causar problemas al acceder a información sensible y
manipularla.
Tesla, 2014
En 2014, investigadores de seguridad anunciaron que podían quebrantar el
sitio web de Tesla con una inyección de SQL, lo que les permitiría obtener
privilegios de administrador y robar datos de los usuarios en el proceso.