Auditoría básica de seguridad web

por David Abad
Seguridad web

La seguridad es un aspecto fundamental de cualquier sitio web. En este artículo veremos como realizar revisiones básicas de seguridad web para detectar vulnerabilidades, centrandonos en cuatro estrategias:

  • Vulnerabilidades a nivel de servidor
  • Vulnerabilidades a nivel de CMS
  • Vulnerabilidades XSS
  • Vulnerabilidades SQL

Vulnerabilidades a nivel de servidor

En primer lugar, analizaremos el software que se encuentra funcionando en el servidor que aloja el sitio web, buscando versiones antiguas de software con vulnerabilidades detectadas.

Para ello, necesitamos obtener la dirección IP del servidor. En caso de que el sitio web no cuente con servidores intermedios (caché, cdn, etc.), obtener la IP es una tarea muy sencilla, mientras que si el sitio web cuenta con un servidor intermedio, la tarea pasa a ser más compleja como se explica en el siguiente artículo:

Una vez obtenida la dirección IP del servidor, pasaremos a escanear los puertos abiertos en busca del software funcionando en el servidor. Para ello utilizaremos la herramienta NMAP:

sudo apt-get install nmap
nmap -sV X.X.X.X

Como resultado, la herramienta devolverá un listado con los puertos abiertos y el software funcionando en cada uno de los puertos:

Resultado NMAP

El siguiente paso sería buscar vulnerabilidades conocidas en el software detectado. Para ello, existen bases de datos de exploits como VulDB, X-Force o ExploitDBSin embargo, es posible automatizar esta búsqueda de vulnerabilidades con el módulo Vulscan para Nmap:

git clone https://github.com/scipag/vulscan scipag_vulscan
sudo ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan
nmap -sV --script=vulscan/vulscan.nse X.X.X.X

Al lanzar este comando, se mostará un informe con los exploits (vulnerabilidades) conocidos para el software que se encuentra funcionando en el servidor. Tras esto, los objetivos a conseguir serían los siguientes:

  1. Lanzar un payload (troyano o herramienta de control remoto) a través del exploit. 
  2. Conseguir acceso al servidor de forma persistente.
  3. Conseguir escalar privilegios y obtener permisos de administrador.
Hay que ser muy consciente de lo peligroso que es contar con software con vulnerabilidades conocidas y de la importancia que tiene mantener nuestros servidores actualizados.

Vulnerabilidades a nivel de CMS

Del mismo modo que existen exploits para explotar vulnerabilidades de software de un servidor, tambien existen exploits para los CMS con los que se construyen la mayoría de sitios web (Drupal, Wordpress, Magento, etc.).

Por tanto, otro método de encontrar vulnerabilidades es: 

  1. Detectar la tecnología CMS utilizada en un sitio web, mediante herramientas como WhatCMS.
  2. Buscar vulnerabilidades conocidas en bases de datos de exploits.

Tambien existen herramientas de análisis de seguridad para tecnologías CMS específicas. El siguiente articulo detalla el uso de algunas herramientas de detección de vulnerabilidades para sistemas Magento:

Vulnerabilidades XSS

Las vulnerabilidades Cross-site Scripting (XSS) consisten en conseguir la inyección de un javascript malicioso en el sitio web, de modo que los usuarios, al acceder a determinada página, ejecuten involuntariamente este script.

Estos ataques suelen realizarse a través de formularios o parámetros de URL no controlados correctamente, incluso llegando a conseguir almacenar el código malicioso en base de datos.

Encontrar páginas vulnerables en un sitio web puede ser muy costoso, pero existen herramientas como XSStrike, que automatizan la detección de este tipo de vulnerabilidad.

XSStrike

Este tipo de vulnerabilidad se centra en atacar a los usuarios del sitio web, ya que el código javascript se ejecuta en el lado del cliente que visita la página.

Vulnerabilidades SQL

Los ataques de inyección de código SQL son una de las vulnerabilidades más peligrosas ya que permiten la ejecución de código malicioso en base de datos, pudiendo extraer información sensible o incluso modificarla.

Estos ataques consisten en conseguir enviar consultas a base de datos a través de formularios o parámetros de URL no controlados correctamente. 

Encontrar páginas vulnerables en un sitio web puede ser muy costoso, pero existen herramientas como SQL Map, que automatizan la detección de este tipo de vulnerabilidad.

SQL Map


Este tipo de vulnerabilidad es muy utilizada para la extracción de información sensible como contraseñas o tarjetas de crédito, por lo que siempre es recomendable almacenar esta información encriptada en base de datos.  

A pesar de que la encriptación de esta información sensible aumenta considerablemente el nivel de seguridad de la información, hay que destacar que existen herramientas de fuerza bruta centradas en desencriptar este tipo de datos, aunque normalmente el coste computacional es enorme y, en muchas ocasiones, inviable.

Consejos finales

Los siguientes consejos pueden ayudarte a mantener tu sitio web protegido de posibles amenazas como las anteriores:

  • Manten el software de tu servidor actualizado.
  • Manten tu CMS actualizado.
  • Utiliza un servicio externo de caché / balanceo de carga, etc.
  • Utiliza una política de permisos lo más restrictiva posible en tu servidor.
  • Oculta todo lo posible la dirección IP de tu servidor.
  • Utiliza funciones de escapado de caracteres HTML/JS a la hora de mostrar datos en una página.
  • Utiliza funciones de bindeo de valores a la hora de programar consultas a tu base de datos.
  • Incluye captchas en los formularios de tu sitio web.
  • En base de datos, almacena encriptada toda la información sensible.
  • Intenta exponer el menor número de servicios (puertos abiertos) en tu servidor. 

Déjanos tu email para recibir contenido interesante en tu bandeja de entrada, cada mes.

¡No hacemos spam!

Otros artículos