BadStore es una aplicación web montada sobre la distribución de Linux (Trinux). La distribución permite simular un servidor con todos los servicios activos y una tienda de libros instalada que contiene varios fallos de seguridad, para hacer pruebas de hacking y penetración.
BadStore pesa apenas 10 mb y se puede utilizar desde virtualbox para simular un servidor y realizar los ataques desde otro ordenador o desde el mismo.
La plataforma web BadStore se ejecuta con Perl, Apache y MySQL.
Las ventajas de BadStore son:
- Fácil de configurar.
- Se puede ejecutar desde una máquina virtual.
- Podemos acceder a la máquina virtual configurando una IP como si fuese un VPS.
Podemos descargar la ISO desde la página oficial de BadStore.
A continuación utilizaremos la ISO de BadStore en una maquina virtual como Virtualbox. Necesitaremos tener instalado VirtualBox, su instalación es muy sencillo como se explico en los tutoriales Crear un Servidor VPS en un ordenador hogareño y Linux – Instalando Ubuntu.
A continuación iniciamos Virtualbox y vamos a crear la maquina virtual para alojar BadStore. Deberemos seleccionar un versión de Linux de 32bit.
A continuación damos clic en Siguiente y deberemos asignar la memoria para la maquina virtual, en este caso asignamos 1,7 gigas de RAM más que suficiente para esta versión de Trinux.
Damos clic en Siguiente y crearemos el disco virtual para instalar nuestra maquina virtual.
A continuación damos clic en Siguiente y deberemos asignar el tipo de disco virtual. Los formatos más utilizados que nos ofrece Virtualbox son:
- VDI: Es el formato por defecto de Virtualbox.
- VMDK: es un formato de código abierto, este tipo de archivo de disco virtual puede funcionar en otras plataformas de virtualización como VMWare.
Existen otros mas específicos, pero los anteriores son multiplataforma y los mas recomendados. Deberemos tener en cuenta antes de crear la maquina virtual si vamos a ejecutar la máquina virtual en otras plataformas o no, ambos formatos funcionan en otros sistemas operativos. En este tutorial utilizaremos el formato VDI.
Ahora damos clic en Siguiente y deberemos asignar un nombre de la carpeta que funcionará como disco duro virtual. Además deberemos definir el tamaño del disco curo virtual. BadStore solo ocupa 11MB pero asignamos entre 4gb y 50 GB por si queremos instalar herramientas de seguridad o testeo.
A continuación damos clic en Siguiente y deberemos buscar el ISO para indicar cual será el que se instalará.
A continuación iniciaremos BadStore y veremos como conectarnos a este VPS.
Iniciará el sistema en modo consola y daremos un Enter para activar la linea de comandos, en este caso no tenemos un dominio asi que utilizaremos la ip del VPS para realizar nuestros ataques, lo que debemos averiguar para comenzar es la ip del VPS. Para ello utilizaremos el comando:
bash# ifconfigAsí obtenemos la configuración de una red Ethernet con ip 192.168.0.15, entonces desde un navegador en el ordenador, fuera de la maquina virtual, ponemos la IP.
Accedimos a la web y podemos iniciar el análisis de vulnerabilidades y pruebas de pentesting o hacking que veremos a continuación.
A) Fallo en la Búsqueda
La tienda tiene un buscador en la columna izquierda, ingresamos un valor cualquiera que seria la búsqueda de un libro y haremos de que falle, como resultado nos mostrará la consulta SQL.
Esto ocurre al no validar los datos que se ingresan y los errores que se producen.
B) Vulnerabilidad con Cross Site Scripting (XSS)
Vamos a dejar un comentario en el libro de visitas Guestbook, pero vamos a poner código Javascript en los campos del formulario.
Añadimos un comentario utilizado la función alert de Javascript para que muestre un mensaje, este código se guardará en la base de datos y luego se ejecutará cada vez que se cargue la pagina web del libro de visitas. Esta vulnerabilidad permite que ingresemos cualquier código Javascript, inclusive podríamos redireccionar a otra web cada vez que alguien acceda al libro de visitas, como por ejemplo
<script type="text/javascript"> location.href = "mihackdominio.coml"; </script>Con eso lo redireccionamos.
C) Utilizar Herramientas de Escaneo
Podemos utilizar la terminal del ordenador para escanear el VPS con distintas herramientas para obtener mas información,
Por ejemplo:
Nmap: con la herramienta Nmap podremos escanear puertos para determinar cuales se encuentran abiertos:
Nmap 192.168.0.15
Podemos observar que esta activo el servicio mysql por lo que podría haber una base de datos funcionando con la web.
D) Atacando el servidor MySQL con SQLMAP
Para este testear esta vulnerabilidad utilizaremos SQLMAP, como lo vimos en un tutorial anterior:
SQLMAP herramienta de Inyección de SQL y Ethical hacking de bases de datos.
Debemos buscar una URL donde se envíen parámetros, para eso, nada mejor que el buscador, si ponemos el código de algún libro por ejemplo 1000, obtendremos el enlace en el navegador. A continuación utilizamos el comando de sqlmap para buscar que motor de base de datos utiliza la web.
Verifico que motor de base de datos utiliza la web y si es atacable y buscamos la base de datos mediante el siguiente comando:
./sqlmap.py -u "http://192.168.0.21/cgi-bin/badstore.cgi?searchquery=hi&action=search&x=0&y=0" --current-db
Podemos observar que el servidor es Apache y el motor de base de datos es Mysql 5.0.
A continuación buscaremos escanear y listar las tablas de la base de datos que encontramos, para ello utilizamos el siguiente comando:
./sqlmap.py -u "http://192.168.0.15/cgi-bin/badstore.cgi?searchquery=hi&action=search&x=0&y=0" --tables
E) Obteniendo acceso Administrador
Una de las vulnerabilidades es utilizar parametros URL para cambiar secciones o páginas de la web. BadStore tiene esta vulnerabilidad, por ejemplo http://192.168.0.15/...ction=myaccount, si en el parámetro action pasamos como una sección iremos a ella, por lo tanto podemos probar con admin, panel u otra palabra que indique un panel de control, ejemplo http://192.168.0.15/...i?action=admin, efectivamente nos permite ver el panel de control pero no modificar nada.
Un error común es que cuando un usuario se registra, enviamos parámetro ocultos para diferenciar a un usuario de otro por ejemplo un cliente de un proveedor o un administrador. Para ver si esto ocurre vamos a instalar un plugin para el navegador que se denomina Tamper Data y que muestra los parámetros que se envían desde un formulario así podremos ver si hay parámetros ocultos.
A continuación activamos el plugin desde el menú de firefox Herramientas >Tamper Data, esto permitirá capturar los datos que se envían a través de un formulario, si vamos al formulario de registro y luego pulsamos en la venta de Tamper data la opción Comenzar modificación, al enviar captura los datos.
Podemos observar que hay un campo oculto que se llama role y es el que determina el rol así U será usuario y A administrator, si cambiamos el parámetro nos registraremos como administrador y tendremos el control total del panel de control.
Ahora podemos acceder al panel de administración porque al registrarnos ya quedamos logueados. Ademas podemos acceder a todos los listados del panel de administración.
BadStore nos sirve para realizar todo tipo de pruebas sobre vulnerabilidades y ofrece un enfoque práctico para encontrar y explotar vulnerabilidades basadas en web. Es una forma de entrenamiento para saber securizar de forma correcta tus sitios web.
Podemos utilizar un software para detectar vulnerabilidades, habíamos visto en un tutorial como:
Escanear vulnerabilidad de un sitio web con ZAP
Nessus - Analizar problemas de seguridad de red en sitios web.
Podemos ver un ejemplo del escaneo y generar un reporte para visualizar de que es cada vulnerabilidad.