Después de un tiempo sin subir ningún contenido nuevo por problemas en los servidores y con un post hace un par de días en relación con iptables, había pensado que, ya que hemos hecho un post enseñando como proteger nuestro sistema, porque no después hacer todo lo contrario, es decir, destruir algo. Recordé una aplicación web que había utilizado hace algún tiempo y me dió por volver a instalarla y volver a destrozar todo aquello que se me ocurriera. Esta aplicación es DVWA.
Qué es DVWA
DVWA (Damn Vulnerable Web Application) es una aplicación web destinada para la práctica de ataques en sitios web basados en php y mysql. En otras palabras es una web lista para destrozar todo lo posible. El principal objetivo es ayudar a los profesionales en la seguridad para poner a prueba sus habilidades en un entorno lo más real posible. Ayudar a los desarrolladores web a comprender mejor ciertos procesos y para profesores y estudiantes en este campo. Podemos encontrar una aplicación web con vulnerabilidades de diferentes tipos y niveles de dificultad y podemos descargarla o buscar más información desde la página oficial.
Aviso! Esta aplicación es vulnerable, es decir, si la instalan es su sistema pueden hacerlo vulnerable ante un posible ataque exterior. Por esta razón se recomienda instalar la aplicación en una máquina virtual para evitar poner en riesgo nuestro sistema.
Vulnerabilidades disponibles
Como se comprobará en futuros post, las malas prácticas incluidas en esta aplicación pueden llevar a brechas de seguridad graves pudiendo poner en peligro todo el sistema en el cual esté instalada esta aplicación.
Esta aplicación consta de 3 niveles de dificultad low (bajo), medium (medio) y high (alto). Además las vulnerabilidades disponibles para explotar son:
- Brute Force
- Command Execution
- File Inclusion (Local y Remote File Inclusion)
- SQL Injection
- SQL Blind Injection
- File Upload
- CSRF (Cross-Site Request Forgery)
- XSS reflected
- XSS stored
Para aquellos que todo esto les suene a chino, tranquilos, todo se explicará claramente y con ejemplos en el momento oportuno. Conforme vaya publicando post con las diferentes vulnerabilidades, se añadirá además un enlace en cada una de ellas a la entrada en la cual se expliquen.
Además desde la versión 1.0.7, podemos descargarnos una máquina virtual con todo ya configurado que incluye además, ciertas vulnerabilidades en dicho sistema.
Esta máquina consta de las siguientes especificaciones:
- Ubuntu Server 10.04
- LAMP 1.7.3a Linux (Apache 2.2.14, MySQL 5.1.41, PHP 5.3.1)
- WebDav
- Fluxbox
- Firefox 3.6.8
- Addons de Firefox: XSS Me, SQL Inject Me, Access Me, Tamper Data, cliente REST, Hackbar, ShowIP, Switcher UserAgent, Firebug y NoScript.
Podemos descargarla desde su página en github.
Instalación de DVWA
Como ya hemos comentado, lo recomendable es instalar la aplicación en una máquina virtual. Entonces y para enseñar a instalar en kali linux, lo instalamos en una vm de kali también. Podemos descargar la aplicación desde el siguiente enlace o mediante wget como hacemos nosotros con el siguiente comando
1 |
wget https://github.com/ethicalhack3r/DVWA/archive/v1.9.zip |
Descomprimimos en fichero .zip
1 |
unzip v1.9.zip |
Una vez lo tenemos descomprimido, movemos la carpeta a la ruta /var/www y le cambiamos el nombre por dvwa
1 2 |
mv DVWA-1.9/ dvwa mv dvwa/ /var/www/ |
Ahora accedemos y deberemos modificar un fichero con la configuración de la base de datos
1 2 |
cd /var/www/dvwa/config vi config.inc.php |
Y veremos un fichero como el que aparece en la siguiente imagen
Vamos a eliminar el contenido de la variable db_password dejándola igual a ” y vamos a crear la base de datos
1 2 3 4 |
service mysql start mysql -u root -p create database dvwa; exit; |
Una vez creada nuestra base de datos arrancamos el servicio de apache y creamos un fichero conf para nuestra web
1 2 3 |
service apache2 start cd /etc/apache2/sites-available vi dvwa.conf |
En el archivo deberéis incluir lo siguiente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. ServerAdmin webmaster@localhost DocumentRoot /var/www/dvwa DirectoryIndex index.php <Directory "/var/www/dvwa"> Options +Indexes +FollowSymLinks AllowOverride all </Directory> # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/dvwa-error.log CustomLog ${APACHE_LOG_DIR}/dvwa-access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> |
De momento vamos a dejarlo así, en las próximas semanas tengo previsto crear varios post explicando las diferentes configuraciones posibles para un servidor como puede ser apache, httpd o nginx.
Agregamos el sitio a nuestro apache y reiniciamos el servicio
1 2 |
a2ensite dvwa.conf service apache2 restart |
Como último paso y para poder llevar a cabo ciertos exploits a los que es vulnerable, se deberá realizar un cambio en el fichero de configuración de php (php.ini), dejando las siguientes directivas:
- magic_quotes_gpc=off (esta directiva fue eliminada en la versión 5.4.0 de php)
- allow_url_fopen=on (permite acceder a ficheros a partir de la url)
- allow_url_include=on (esta opcion permite añadir archivos a través de la url por medio de las funciones de php include, include_once, require, require_once)
Con esto ya lo tenemos instalado y configurado, accedemos en la url http://127.0.0.1/dvwa y listo. En nuestro caso accedemos a la ip que hemos configurado previamente en la máquina virtual.
Para acceder a la página los datos de acceso son
user: admin
password: password
Con esto terminamos por ahora pero, en las próximas semanas iré subiendo diferentes post explotando todas y cada una de las vulnerabilidades de esta aplicación. Cualquier duda en los comentarios y gracias por leernos.