Ejercitario para Laboratorio - Universidad Nacional de Asunción

Facultad Politécnica – Universidad Nacional de Asunción
Maestría en TICs – Énfasis Auditoría y Seguridad Informática
Seguridad en Aplicaciones y Base de datos - 2015
Seguridad web – Práctica 1 (21/agosto/2015)
Ejercicio #0 – Preparando el entorno
1) Instale en su máquina Vmware Player y tenga funcionando la máquina virtual que se encuentra en el sitio del
curso (http://www.cc.pol.una.py/~ccappo/cursos/appsec/src/vm.tgz)
2) Vea que la máquina esta comprimida, puede descomprimirla con WinRAR si es que tiene Windows. Si tiene linux
entonces use simplemente el programa tar con los parámetros adecuados ( tar xvf <archivo>). Los
archivos de la aplicación se encuentran en /var/www/payroll.
3) Ejecute VMware Player y elija el archivo del directorio que descomprimió en 2)
4) Ejecute VMware Player (haga doble click en test_vuln)
Saldrán algunos mensajes de advertencia y de actualización, solo continue. Cuando haga funcionar su máquina
virtual por primera vez, le preguntará si fue movida o copiada, indique que fue copiada.
5) En la máquina virtual existen dos usuarios root/root (que es de root ) y user/user.
6) Busque la dirección IP que fue asignada a su máquina virtual. (192.168.###.###). Utilice el programa ifconfig
desde la máquina virtual.
Seguridad en Aplicaciones y Base de datos
1/5
7) Pruebe en el navegador que el servidor web (Apache) este respondiendo y la aplicación funcionando:
http://<IP>/payroll/index.php
Ejercicio #1) Test de vulnerabilidad XSS y un poco más
Instale OWASP ZAP, que utilizaremos para interceptar los paquetes HTTP y también para verificar las vulnerabilidades.
¿Cómo puede encontrar alguna vulnerabilidad XSS? Obviamente mirando el código fuente uno puede hacerlo fácilmente,
pero sería mejor analizar cuando no se tiene el código fuente disponible.
Para encontrar utilizamos OWASP ZAP por medio de un escaneo de vulnerabilidades. Coloque el URL de la aplicación
que analizaremos (dependiendo del IP que tenga su máquina virtual)
Seguridad en Aplicaciones y Base de datos
2/5
En principio debería de dar este resultado luego elegir la opción “Atacar” en la pestaña del “Inicio Rápido”.
Ahora seleccione el URL en Sitios que corresponde a http://<IP> y luego dentro de este payroll
Haciendo click a la derecha elija del menú popup la opción de Atacar y luego Activar Escaneo. Saldrá un diálogo con una
pestaña “Scope”, marque la opción “Show Advanced options” y cuando observe más pestañas elija “Vectores de
Entrada”, aquí marque “Enabled Script Input Vectors”
Seguridad en Aplicaciones y Base de datos
3/5
Al seleccionar “Star Scan” tardará un poco y se podrá ver el resultado en la pestaña de “Alertas”
Puede notar que ahora ya se tiene la alertas de XSS y un aparente SQL-Injection.
Analice la alerta XSS y ahora trate de interceptar las peticiones para agregar código JavaScript de tal forma que pueda
cambiar el comportamiento de la página intentando colocar código JavaScript que se pueda ejecutar (por ejemplo incluya
el evento onclick() en el control con problema de XSS).
Para interceptar debe configurar el navegador con proxy. Usar localhost:8080 que es donde ZAP tiene por defecto.
Luego indicar a ZAP que quiere interceptar todo lo proveniente de la dirección IP en cuestión, elija de la lista de sitios,
haga click a la derecha y seleccione parada. Coloque la aplicación en la lista de paradas.
Indique como puede salvar el problema de XSS para esta aplicación sencilla (la que fue encontrada por el escaner)
¿Puede indicar otra vulnerabilidad de XSS aparte de esta?
Referencias útiles (Tutoriales)
HTML
http://www.w3schools.com/html/default.asp
JavaScript
http://www.w3schools.com/js/default.asp
SQL
http://www.w3schools.com/sql/default.asp
PHP
http://www.w3schools.com/php/default.asp
Y más
http://www.w3schools.com/
Seguridad en Aplicaciones y Base de datos
4/5
Ejercicio #2) Test de vulnerabilidad SQL Injection
En el anterior escaneo aparentemente se encontró un SQL Injection. Explique si efectivamente es un ataque SQLI y si no
porque no lo puede considerarse.
Ahora cambie el código de forma que pueda tenerse un SQL Injection (implica que debe explorar un poco la aplicación).
Indique que parte del código se evita que exista SQL Injection. Vuelva a realizar un scaneo de vulnerabilidades y verificar
si efectivamente encuentra la vulnerabilidad. Esto requiere que conozca un poco de PHP pero la aplicación es bastante
simple (Puede utilizar el tutorial de PHP indicado en la página anterior).
El gestor de base de datos que utiliza la aplicación se llama SQLite, es bastante simple. Los datos de nuestra aplicación de
prueba se encuentran en el archivo db/payroll.db . Puede acceder a este archivo vía el comando $ sqlite3
<archivo.db>
Ejercicio #3)Test de vulnerabilidad (Cross-Site Request Forgery ) CSRF
Un documento de consulta donde se explica CSRF y posibles contramedidas
Barth, A., Jackson, C., & Mitchell, J. C. (2008, October). Robust defenses for cross-site request forgery. In
Proceedings of the 15th ACM conference on Computer and communications security (pp. 75-88). ACM.
La aplicación también posee un mecanismo (challenge-response) para protegerse de los ataques CSRF. Diseñe un ataque
de forma que pueda verificar que el mecanismo funciona.
Para ello puede construir una pequeña página HTML que contenga lo necesario para testar el mecanismo de CSRF.
Si se suprime dicho mecanismo, muestre que la aplicación puede ser vulnerable a un ataque CSRF.
Ejercicio #4)Test de vulnerabilidades – Aplicación BadStore (Opcional)
Realice un escaneo de la aplicación BadStore utilizando OWASP ZAP. BadStore es un aplicación web instalada en un
máquina Linux y que posee varias vulnerabilidades. Es utilizada generalmente para cursos de seguridad. Existen otras
pero que son un poco más complejas de instalar ( por ejemplo Webgoat (https://www.owasp.org/index.php/WebGoat) ,
OWASP Mutillidae II (http://sourceforge.net/projects/mutillidae)
ISO de BadStore puede obtenerlo de la página indicada abajo o de esta
https://d396qusza40orc.cloudfront.net/softwaresec/virtual_machine/BadStore_212.iso
Manual de BadStore puede accederlo desde la misma aplicación en el apartado REFERENCE que aparece en las opciones
de la izquierda de la aplicación.
Para colocar en funcionamiento debe crear una nueva máquina virtual en el VMPlayer e indicar que se arrancará desde el
archivo ISO que contiene la máquina con la instalación de BadStore.
Al crear la máquina virtual indique es de tipo “Other Linux 2.4.x kernel”.
Además en la opción de red (Network Adapter) seleccionar “Host-only: A private network shared with the host”
Verifique el nro. IP de la máquina virtual y agregue este número a su archivo de hosts local.
En caso de que tenga Linux agregue a /etc/hosts
En caso de que tenga Windows agregue al archivo que usualmente se encuentra en
<WIN-dir>\System32\drivers\etc\
La linea que debe agregar al archivo hosts es:
<IP>
www.badstore.net
Una explicación detallada de como instalar en un VMWare puede encontrar aquí
http://cryptopone.com/blog/2014/11/24/setup-badstore-vmware-nov-2014/
Con las vulnerabilidades encontradas, liste al menos dos e indique la o las contramedidas para resolverla.
Vulnerabilidad 1 : __________________________________________________________________________________
Contramedida: ______________________________________________________________________________
Vulnerabilidad 2 : __________________________________________________________________________________
Contramedida: ______________________________________________________________________________
Seguridad en Aplicaciones y Base de datos
5/5