Diseño y Desarrollo

SQL Injection, ¿Por qué lo utilizan los hackers?

Hemos sabido últimamente de algunos Robos de Información en algunas paginas Web muy conocidas y debido a las noticias que publican o al veredicto final del porque sucumbió la información, algunas de las respuestas mas nombradas han sido que “ Utilizaron SQL Injection para el Robo… “, pero ¿Porqué? ¿Cuál es la razón por la cual lo han estado utilizando estos atacantes si no es la mejor opción o el mejor método para el robo información?

Para comenzar estos ataques o “Vulnerabilidades de Control de Entrada” como algunos lo llaman, se debe a la inserción de Sentencias SQL arbitrarias, dentro de una consulta, que tiene por objetivo, manipular de una manera u otra los procesos de una aplicación Web determinada para podernos proporcionar la información que le pedimos en dicha consulta, todo esto en resumen, robo de información mediante una simple consulta. Si bien este recurso no es novedoso dentro del ambiente de Seguridad informática, se puede lograr muchas veces con solo disponer de un explorador de Internet y algunos conocimientos básicos de SQL.

La mayor parte de las paginas Web que visitamos, podemos decir que un 95% de ellas, son formularios Web, encuestas, Ordenes de Pedido, Consultas Online, suscripción a servicios y sobre todo formularios de autentificación donde nos piden ingresar nuestro usuario y contraseña. Toda esta información así nos parezca de lo más sencilla por lo regular termina en una Base de Datos.

Esta Técnica ha sido una de las más usadas y se atribuye, no al hecho de que haya mucha información en la Web y que cualquiera lo puede aprender, si no que al poco cuidado que a veces le ponemos a la hora de montar la seguridad en nuestro servidor.

Los ataques de Denegación de Servicio, en general, son uno de los más dañinos ya que ocasiona la Caída de la Pagina Web, entre otros.

A continuación solo daré un ejemplo básico de un SQL Injection que se puede utilizar para un ataque Web, la finalidad es que vean la facilidad con la que se puede ocasionar un problema, se omitirá todo el procedimiento a fin de mostrar solo con fines educativos, el punto que queremos abordar.

En los casos más sencillos, si un Hacker se encuentra con un formulario de acceso, y que habiendo probado con anterioridad sus vulnerabilidades, puede intentar un SQL Injection de la siguiente manera:

Usuario : ‘; DROP table usuarios—
Password: null

En este caso si llegara a entrar esta consulta a la tabla usuarios, esta seria eliminada, haciendo que a partir de ese momento, ningún usuario pudiera autentificarse en dicha página. Si lo notan es algo muy simple, algo que cualquiera de nosotros con conocimientos en Bases de Datos puede realizarlo. Este ataque no es el más aterrorizador debido a su sencillez, pero puede ocasionar un fallo, imagínense un atacante con más ambición que lo que menos le preocupa es tirar una pagina Web, si no al contrario conseguir más información importante

Pero así como SQL Server es la Base de Datos que más interés despierta en los atacantes, no significa que sea la única susceptible de ser atacada mediante esta Técnica. También ha pasado con MySql, Oracle, DB2, PostGres, entre otros, lo que me lleva a decir que la SQL Injection no tiene nada que ver con que es la Base de Datos más conocida, o porque es de la que encontramos más información en la Web, no, al contrario el problema radica en la pobre validación o en algunos casos inexistente que realizamos a nuestras Bases de Datos, por lo que sea o no sea la mejor plataforma del mercado, cada una esta lista para ser atacada en cualquier momento si no tomamos las medidas correctas.

Antes de terminar aquí les dejo algunas medidas de seguridad, tanto puntuales como generales, que debemos de tomar en cuenta para tener un ambiente seguro:

  • Mantén siempre actualizados todos los Services Pack de las aplicaciones que utilices (Sistema Operativo, SQL, etc.)
  • Establece un Password lo suficientemente fuerte para tu cuenta SA (no importa si la utilizas o no)
  • Recuerda establecer los privilegios adecuados, si utilizas más de una cuenta de usuario.
  • Protege de manera adecuada la instalación de tus servidores de base de datos (si cuentas con un SAE, la seguridad física es muy importante)
  • No instales servicios Web en el mismo Server de la Base de Datos.
  • Recuerda utilizar Firewalls vía hardware y Software, para que filtres todos tus accesos desde el exterior a los puertos críticos (incluyendo los TCP 1433 y UDP 1434).
  • Revisa de manera exhaustiva cuales son tus niveles de autenticación y si son los adecuados con respecto a tu instalación de SQL Server.
  • Diseña una estrategia de Seguridad que involucre todas tus herramientas (Recuerda que no te sirve de nada tener mil herramientas de seguridad en tu host, si a tu Workstation lo dejaste solo).
  • No olvides que la Validación de Entrada de Datos es una de las prioridades que debemos de tomar en cuenta.
  • Utiliza los recursos de Programación para realizar las validaciones de entrada a tu Base de Datos, checa si los tipos de datos entrantes son los esperados, antes de que lleguen a la Base de Datos, así estas deteniendo el acceso antes de que sea inhabilitada tu Base de Datos.

La idea es aprender a mejorar nuestras aplicaciones y minimizar los riesgos de algún ataque informático, no necesariamente porque nuestra Web sea sencilla y no tenga información valiosa, no significa que no sea vulnerable, no sabemos si por ahí se encuentre algún individuo que solo quiera ocasionarnos algún dolor de cabeza. Así que atentos a cualquier anomalía y a revisar sus servers.

Comments
To Top