La inyección SQL es una de las vulnerabilidades más comunes y antiguas que existen desde la llegada de la era digital.
A pesar de su antigüedad, hoy en día seguimos observando cómo causan estragos, sobre todo en los computadores menos protegidos.
Este tipo de ataques se encargan de controlar un servidor de base de datos detrás de una aplicación web, evitando los procesos de autentificación y autorización y, en los peores casos, incluso se utilizan para agregar, modificar, y eliminar registros de dicha base de datos.
Dichas vulnerabilidades afectan a todo tipo de sitio web siempre y cuando utilicen una base de datos SQL como lo son MySQL, Oracle, SQL Server, entre otros.
En estas situaciones, los atacantes acceden ilegalmente a información confidencial incluyendo: la información del cliente, sus datos personales, secretos comerciales, propiedad intelectual y cualquier otra información resguardada en el servidor.
Según la OWASP, las inyecciones SQL están catalogadas como la amenaza número uno para la seguridad de las aplicaciones web.
¿Cómo se realizan estos ataques?
Quien lo realiza estos ataques busca entradas de usuario vulnerables dentro de la página o aplicación web.
Aquellas páginas o aplicaciones que presenten esta vulnerabilidad le permiten al atacante crear contenido de entrada (denominado también carga maliciosa) y, una vez enviados comienzan a ser ejecutados en la base de datos.
Las consecuencias de los ataques SQL, dependiendo del caso pueden ser muy graves, estas incluyen:
Búsqueda de credenciales de otros usuarios en la base de datos.
Suplantación de identidad y, según el caso, acceso privilegiado a la información almacenada en el servidor.
Seleccionar, modificar y agregar datos en la base de datos.
Eliminar datos de la base de datos, esto puede afectar a la disponibilidad de la página o aplicación web incluso si existen copias de seguridad de la información hasta que se realice una restauración completa.
Debido a que algunos servidores dan el acceso al sistema operativo mediante el servidor de bases de datos, el o los atacantes pueden implementar este ataque como vector inicial para luego proceder a atacar la red interna detrás de un firewall.
Ejemplo de inyección SQL
En siguiente script encontrarás a continuación podrás observar cómo un atacante se aprovechará de esta vulnerabilidad autenticándose como administrador en el proceso.
Además, debes saber que este en este script se ejecuta un pseudocódigo en un servidor web utilizando un caso sencillo de autentificación mediante nombre de usuario y contraseña, en donde la base de datos usada como ejemplo tiene una tabla denominada con las siguientes columnas: username y password
Estos campos son vulnerables a las inyecciones SQL, permitiéndole al atacante alterar la instrucción SQL ejecutada por el servidor.
Por ejemplo, podría agregar una simple comilla y establecer el campo en: passwd
Como resultado, en el servidor se ejecuta la siguiente consulta SQL
Dicha instrucción devuelve el primero de la tabla independientemente de cuales “y” son.
El primer usuario de una base de datos es usualmente el administrador de la misma. Así que, el atacante no solo omite la autenticación, sino que también obtiene privilegios de administración en el proceso.
Además, el atacante tiene el poder de comentar el resto de la instrucción SQL para controlar (aún más) la consulta SQL: OR 1=1WHEREidusersusernamepasswordid
Ataques de inyección SQL en el 2020: Freepik y Flaticon
Los ataques de inyección SQL son bastante comunes a pesar de las tecnologías con las que se cuentan actualmente.
Se debe aclarar que cualquier empresa, negocio, sitio web o aplicación web puede ser víctima de estos ataques sin importar su tamaño o importancia en el mercado como observaremos en los dos siguientes ejemplos:
El primero involucra a Freepik y Falticon, compañías encargadas de ofrecer una enorme cantidad de recursos para el mundo gráfico.
Ambas compañías vieron comprometidos los datos de 8.3 millones de usuarios, en los que se incluían información de sus correos electrónicos y sus contraseñas.
La mayoría de los usuarios realmente afectados por este ataque poseían contraseñas débiles o fáciles de descifrar.
Este error por parte de los usuarios es, lamentablemente, más común de lo que debería.
Si quieres conocer cómo crear contraseñas más fuertes y seguras te recomendamos leer nuestros consejos para fortalecer tus contraseñas.
Por parte de las compañías involucradas, este error no pasó a mayores gracias a que logró identificarse a tiempo.
¿Cuáles medidas implementaron?
Las medidas implementadas incluyeron la cancelación de las contraseñas que se vieron comprometidas y el envío de un correo informando la situación a los usuarios.
Estos lograron cambiar su contraseña sin ningún problema, de igual manera, en el correo se les recomendaba cambiar cualquier otra contraseña similar o igual a la utilizada en su cuenta de Freepik o Flaticon.
Luego de este ataque la empresa tomó una nueva dirección en cuanto a la seguridad de sus plataformas web y ahora realizan verificaciones regulares para conocer si están siendo utilizadas las direcciones y contraseñas filtradas y así poder notificar al dueño de la cuenta y seguir el procedimiento adecuado.
Descubre cómo y por qué debes implementar controles de acceso basados en la identidad para que no seas una victima más de este tipo de incidentes
6 pasos recomendados por Acunetix para prevenir ataques SQL
Acunetix es la herramienta de ciberseguridad diseñada especialmente para solucionar las vulnerabilidades de páginas o aplicaciones web.
Acunetix ofrece un escáner especializado que detecta las vulnerabilidades SQL al instante y permite a los equipos de TI encontrar soluciones efectivas y duraderas en cuestión de minutos.
Evitar las inyecciones SQL no es fácil, ya que estas dependen de diversos factores como: el subtipo de vulnerabilidad SQLi, el motor de base de datos SQL y del lenguaje de programación.
Sin embargo, Acunetix recomienda estos 6 pasos para reducir las posibilidades de ser víctima de este tipo de ataques.
Paso 1: Entrenar y mantener la conciencia
Según Acunetix, todos los implicados en la creación de la aplicación web deben conocer los riesgos asociados a estas vulnerabilidades.
De esta manera, se debe proporcionar información y capacitación a todo el personal involucrado en estos procesos.
Paso 2: No confiar en ninguna entrada de usuario
Cualquier entrada de usuario que utiliza autentificación SQL representa un potencial riesgo de inyección SQL.
Así que, es recomendable tratar a todas las entradas del usuario como si no fuesen de confianza.
Incluso si son usuarios autenticados, lo mejor es tratarlas todas de la misma manera.
Paso 3: Usa listas blancas, no listas negras
Es recomendable filtrar las entradas de usuario mediante listas blancas en vez de listas negras.
Un atacante hábil conoce como eludir ser detectado por la lista negra.
En caso de ser posible, deberías filtrar las entradas de cada usuario utilizando solo listas blancas estrictas.
Paso 4: Utiliza las últimas tecnologías
Muchas tecnologías de desarrollo web antiguas no cuentan con protección SQLi.
Utiliza la versión más reciente del entorno de desarrollo y el lenguaje, así como las tecnologías asociadas a ellos.
Por ejemplo, se debería usar PDO en lugar de MySQLi en el idioma PHP.
Paso 5: Emplear mecanismos verificados
Se debe evitar intentar construir protección SQLi desde cero.
La mayoría de las tecnologías de desarrollo modernas te ofrecen mecanismos de protección contra ataques SQLi.
Por ejemplo, es mejor utilizar consultas parametrizadas o procedimientos almacenados que aseguren su seguridad.
Paso 6: Escaneos regulares (con Acunetix)
Las inyecciones SQL pueden ser introducida por los desarrolladores o a través de bibliotecas/módulos/software externos.
Lo más recomendable es mantener un escaneo constante utilizando herramientas certificadas y profesionales como lo es Acunetix.
Finalmente, puedes seguir este enlace para conocer cómo proteger tu sitio web con Acunetix
Acunetix + GB Advisors: La mejor combinación, la única solución
Ofrécele a tu empresa y a sus clientes la seguridad que se merecen con Acunetix, desde hoy.
Puedes adquirir tu demo gratuito de Acunetix con nosotros, solo tienes que contactarnos y solicitarlo.
En GB Advisors te ofrecemos las soluciones de ITSM que requieras.
Contamos con asistencia completa y personalizadas a través de los procesos de instalación, configuración, e implementación de ésta y muchas otras herramientas más.