Categories
Seguridad

Tipos de ataques a un sitio web

Cuando hablamos de tipos de ataques a un sitio web, debemos hablar de “hacking”. El hacking informático tiene como objetivo principal la manipulación de un sistema. Se puede realizar mediante el uso de virus, gusanos, troyanos, ataques de denegación de servicio, ataques de fuerza bruta, etc.

En este artículo voy a hablar de tipos de ataques web centrándome en el ataque de SQL inyection. Otro tipo de ataque es el de Phishing, el cual ya he hablado previamente en esta página en los artículos https://avertigoland.com/2021/01/pasos-sencillos-para-cerrar-paginas-de-phishing/ y https://avertigoland.com/2021/01/como-notificar-un-correo-de-phishing-a-google/.

Clasificación de hackers

Las personas que hacen uso del hacking informático se conocen con el nombre de hackers. Podemos establecer una clasificación de hackers en función del nivel de maldad que tengan. Esta clasificación no es del todo acertada porque utiliza colores para denominar los tipos de hackers y en este momento quizás no sea del todo adecuado.

  • Black Hat (sombrero negro). El objetivo principal de este hacker es conseguir y explotar las vulnerabilidades de los sistemas informáticos. Son expertos en romper la seguridad de los sistemas con un fin económico, puede actuar por su propia cuenta o ser contratados por terceros.
  • White Hat (sombrero blanco). El objetivo principal de este hacker es la reparación de las vulnerabilidades de los sistemas. Son personas que trabajan en la seguridad de los sistemas informáticos para garantizar la confidencialidad de la información que éstos contengan.
  • Gray Hat (sombrero gris). Es una mezcla de los dos anteriores, se dedican tanto a conseguir y explotar vulnerabilidades. A veces se comportar legalmente y a veces no.

Tipos de ataques: Inyección sql

La inyección de código SQL es un bug (agujero de seguridad) que puede tener lugar tanto en los sitios web como en un programa normal. Este tipo de ataque tiene su origen en un fallo de comunicación entre el usuario y la base de datos. Se escribe código en un campo formulario y ejecuta una consulta en la base de datos.

La comunicación se realiza a través de un lenguaje de programación
conocido con el nombre de SQL (Structured Query Language, Lenguaje Estructurado de Consultas). Hoy en día, hay diseñadores y desarrolladores web que consideran que las consultas a las bases de datos, empleando instrucciones SQL, son consultas seguras. Pero no es del todo correcto. Mediante las consultas SQL podemos evitar los controles de acceso y permitirnos la entrada al sistema operativo donde está alojado el sitio web y realizar las modificaciones.

Ataques por inyección

La inyección SQL es una técnica de inyección de código que puede destruir una base de datos. Es una de las técnicas de piratería web más comunes. Los ataques de inyección de código SQL consisten en la colocación del código malicioso en declaraciones SQL, a través de la entrada de una página web.

Ejemplo de ataque

Para entenderlo mejor veremos un ejemplo. Disponemos de un formulario que se encarga de enviar la contraseña al usuario mediante correo electrónico. El usuario introduce su correo electrónico en un campo del formulario y la página web hace una búsqueda en la base de datos hasta encontrar ese usuario.

Si la aplicación no encuentra la dirección de email, no envía un email con la nueva contraseña. Sin embargo, si la aplicación encuentra esa dirección de correo electrónico en la base de datos, enviará un
email a esa dirección con una nueva contraseña o con la información
necesaria para restaurarla.

Antes de que el atacante pueda introducir la inyección de código SQL, debe saber cómo se manejan los datos de entrada del formulario, para eso con introducir una comilla simple “ ’ ” al final de la dirección de email sería suficiente. Si la página muestra no muestra ningún error, el atacante sabe que la base de datos es vulnerable y, por tanto, puede comenzar con la manipulación de la misma.

Qué debemos saber antes de hacer la inyección SQL

Para poder llevar a cabo este ataque se necesita previamente saber la estructura y nombre de la tabla y la estructura de ésta. Para poder conseguir esa información se tiene que emplear la siguiente sentencia 1=1 que siempre va a ser verdadero. La forma es: SELECT * FROM users WHERE id =10 or 1=1.

Esta sentencia devuelve toda la tabla de usuarios porque debe cumplir una de las dos partes del WHERE y la parte 1=1 va a ser siempre cierta.

Qué hacer para evitar inyecciones SQL

Las medidas que debemos tomar para evitar ataques con inyecciones SQL son:

  • Utilizar caracteres especiales en las consultas SQL a la base de datos. Añadiendo la barra invertida “\” delante del texto utilizado en las consultas SQL conseguimos mejorar la seguridad de la consulta. No es aconsejable la utilización de caracteres como son las comillas dobles (“), las comillas simples (‘) o los caracteres \x00 o \x1a ya que pueden ser utilizados en los ataques.
  • Limitar los valores de las consultas. Aunque el valor de la consulta sea un entero, es aconsejable delimitarlo siempre entre comillas simples ( ‘ ). Una instrucción SQL del tipo: SELECT nombre FROM usuarios WHERE id_user = $id Será mucho más fácilmente inyectable que: SELECT nombre FROM usuarios WHERE id_user = ‘$id’ SI, donde $id es un número entero.
  • Verificar siempre los datos que introduce el usuario. Comprobar que los datos introducidos por el usuario son correctos. Si una variable es numérica el usuario debería de estar obligado a escribir solo números.
  • Conexión. El usuario que se conectará a la base de datos debe tener los privilegios necesarios para realizar la acción nunca más. Es muy adecuado el que sólo algunos usuarios con permisos puedan realizar modificaciones en la base de datos.

Otras herramientas para analizar nuestro sitio web

Además podemos utilizar herramientas que nos van a permitir mejorar la protección de nuestro sitio web y evitar estos tipos de ataques. Entre ellas encontramos las dos siguientes.

SQLiHelper 2.7 SQL injection

Es una aplicación que se emplea para recoger la información de una base de datos. Utiliza técnicas de inyección de código SQL.

Pangolin

Se trata de una aplicación de pago que puede realizar pruebas de penetración de inyección SQL automática desarrollada por NOSEC. Su objetivo es detectar y aprovechar las vulnerabilidades de inyección de SQL en aplicaciones web. Ya no está disponible en línea.

Leave a Reply