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
© Copyright 2024