A lo largo del año pasado se descubrieron varias vulnerabilidades que afectan a servidores, como fue el caso de Heartbleed. Sin embargo también siguen vigentes muchas vulnerabilidades clásicas de hace algunos años como Cross Site Scripting (XSS) o inyecciones SQL, que terminan por afectar la seguridad y confidencialidad de los usuarios.

En este post veremos cómo configurar un laboratorio de pruebas para auditorías web, donde se encontrarán las vulnerabilidades más habituales con diferentes niveles de dificultad, para comprender cómo funcionan.

Uno de los laboratorios disponibles es Damn Vulnerabilty Web Aplication (DVWA), que usaremos para esta práctica. Una vez descargado se debe descomprimir y mover al directorio del servidor web.

En este ejemplo hemos montado el laboratorio en un sistema operativo Linux, pero no existe ningún inconveniente en hacerlo en Windows. Para esta aplicación web hemos utilizado Apache2. Cuando el descomprimido se ha movido al directorio del servidor web (en este caso /var/www de Apache2), debería verse algo similar a la captura que se muestra a continuación:

folder
Aquí pueden apreciarse todos los archivos de la aplicación, los cuales son necesarios para el correcto funcionamiento del laboratorio. Una vez realizado el traslado del directorio de la aplicación, debemos otorgarle permisos, y para hacerlo vamos a recurrir al comando chown.

Para ejecutar este permiso es necesario ejecutar el comando de la siguiente manera:

chown
Aquí ya se ha movido el directorio a la carpeta del servidor donde permitirá acceder una vez iniciado Apache2 y se le han otorgado los permisos para que pueda funcionar correctamente. En primer lugar se debe iniciar la base de datos MySQL, lo cual se logra de la siguiente manera:

mysql-start
Ahora debemos crear la base de datos (en este caso MySQL) para que la aplicación pueda conectarse y permita el inicio de sesión de los usuarios; para hacerlo basta con escribir el comando mysql (valido solo para modo local) en una terminal de comandos. En caso que la base de datos se encuentre en un servidor remoto, el comando a ejecutar es mysql –h [servidor] –u [usuario] –p [para que solicite contraseña de acceso].

Veamos el ejemplo:

createdb
En la captura anterior observamos que con el comando CREATE DATABASE <Nombre> se crea la nueva base de datos, que en este caso se llama dvwa por las siglas de su nombre. Hecho el paso anterior ya se puede salir de la consola mysql con el comando exit. Ahora ya está en condiciones para iniciar las instancias necesarias para correr la aplicación.

Ahora que el servicio MySQL ya se encuentra funcionando correctamente, solo resta iniciar la instancia del servidor web Apache2. Para hacerlo es similar al caso de MySQL, solo que se cambia el nombre a Apache2:

apache-start
Con los servicios iniciados ya estamos en condiciones de acceder a la aplicación, para hacerlo solo basta con abrir el navegador web y acceder la dirección http://localhost/dvwa. Una vez que se accede a la dirección web mencionada, aparecerá un portal como el siguiente:

login
Si bien ya fue creada la base de datos en MySQL, todavía no fue configurada. Para hacer esto basta con hacer clic en las letras azules “here” (remarcado con recuadro rojo en la captura anterior). Una vez hecho esto se accede a la siguiente pantalla:

setup1
Presionando el botón para crear la base de datos, realizará las configuraciones correspondientes:

dbcreatedAhora ya está todo funcionando correctamente, solo basta con acceder al botón Home en la columna izquierda para proceder con el login de usuario. En la pantalla de acceso basta con ingresar los siguientes datos para acceder:

  • Usuario: admin
  • Contraseña: password

El ingreso a la aplicación permitirá seleccionar la configuración del nivel de dificultad con el cual se quiere auditar la aplicación web. Al seleccionar las diferentes dificultades entre baja, media y alta, automáticamente se realizarán las configuraciones pertinentes en la aplicación para ajustar las vulnerabilidades desde lo más fácil a lo más difícil:

dificultiesAquí ya se puede comenzar a probar las diferentes vulnerabilidades que posee la aplicación. En este caso, para probar una de estas, decidimos por ejemplo hacerlo en “Command Execution”. Este panel presenta una vulnerabilidad a la hora de comprobar la conectividad haciendo uso del comando ping, la cual sin embargo desde ese mismo campo de entrada de dirección IP es posible saltear el comando ping para ejecutar otro comando como por ejemplo leer el archivo /etc/passwd:

commandexec
Este tipo de funcionalidad o herramientas es habitual encontrarlas por ejemplo en routers de Internet, por eso es muy importante también actualizar el sistema operativo de estos dispositivos de conectividad, para corregir este tipo de fallas. Veamos un ejemplo de concatenación de comandos:

commandexec2
En el ejemplo mostrado se ve cómo se ejecuta el ping a la dirección IP 192.168.1.1 y seguido de esto, concatena el comando “ls /var/www/dvwa” (listado del directorio web) mostrando toda la información requerida en el campo de entrada.

De esta forma, se pueden probar las diferentes vulnerabilidades que posee la aplicación en sus diferentes niveles. Este tipo de plataformas educativas tienen como finalidad ayudar a comprender cómo funcionan algunas de las más conocidas, permitiendo obtener el conocimiento necesario para detectar proactivamente estas fallas en sitios propios, y corregirlas antes de que sean explotadas por atacantes.

Estos conocimientos serán muy útiles a la hora de montar sitios web propios y revisar al menos las vulnerabilidades básicas, permitiendo realizar las correcciones correspondientes en tiempo y forma.

Vale la pena remarcar que esta plataforma fue montada localmente en una computadora propia, lo que significa que no requiere ningún tipo de conectividad a Internet para poder acceder. Es importante destacar que no será infringida la ley, ya que es un entorno de pruebas especialmente diseñado para este tipo de auditorías.