Sie sind auf Seite 1von 6

Vulnerabilidades Web y uso de mod-security

SSI 2012/13 23 de octubre de 2012

Indice
1. Entorno de pruebas 1.1. Im agenes a utilizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Establecer el entorno virtualizado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Ejercicio 1: Vulnerabilidades t picas en aplicaciones web 2.1. Descripci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Aplicaciones vulnerables (Cross Site Scripting: XSS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1. Foro simple vulnerable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. Aplicaciones vulnerables (Inyecci on SQL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1. Inyecci on SQL Foro simple vulnerable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2. Inyecci on SQL en Wordpress 1.5.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4. Aplicaciones vulnerables educativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5. Documentaci on a entregar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Ejercicio 2: Instalaci on y experimentaci on con mod-security 3.1. Descripci on de mod-security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Instalaci on y conguraci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Documentaci on a entregar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2 2 2 2 3 3 4 4 5 5 5 5 6

1.
1.1.

Entorno de pruebas
Im agenes a utilizar

Im agenes de partida Imagen y script comprimido: modsecurity.tgz [0,6 GB] Contenido: modsecurity.vdi: Imagen VirtualBox de la m aquina con aplicaciones web vulnerables. Usuarios congurados. login password root purple usuario1 usuario1 usuario2 usuario2 1

swapSSI.vdi: Imagen VirtualBox de una unidad de disco formateada como SWAP ejemplo-modsecurity.sh: Script bash que congura las m aquinas virtuales y las arranca.

1.2.

Establecer el entorno virtualizado

Creaci on de la red donde se realizar a el ejercicio: La v ctima se acceder a desde el equipo atacante empleado en la pr actica anterior Se establecer a una red entre ambos en el segmento 192.168.100.0/24 1. Descomprimir las im agenes en el directorio actual tar xzvf modsecurity.tgz 2. Congurar y registrar las m aquinas virtuales en VirtualBOX (s olo la primera vez) Script de conguraci on y arranque: GNU/Linux: ejercicio-modsecurity.sh
Nota: ejecutarlos desde el directorio donde se hayan descomprimido las im agenes

Para GNU/Linux alumno@pc:~$ bash ejercicio-modsecurity.sh 3. Arrancar las instancias VirtualBOX (si no lo hacen desde el script anterior) desde el interfaz gr aco o desde la l nea de comandos. VBoxManage startvm MODSECURITY

Importante: Despu es de nalizar cada ejercicio terminar la ejecuci on de la m aquina virtual desde l nea de comandos con halt o sudo halt o desde el interfaz gr aco LXDE.

2.
2.1.

Ejercicio 1: Vulnerabilidades t picas en aplicaciones web


Descripci on

En este ejercicio veremos ejemplos simples de vulnerabilidades web. Usaremos una apliaci on PHP de muestra muy simplicada que no realiza ning un tipo de comprobaci on de las entradas que recibe y que permite Inyecci on de SQL (que usaremos para burlar la comprobaci on de login y password) y XSS (Cross Site Scripting ). Tambi en veremos un ejemplo de software real, una versi on antigua del software para blogs WordPress, con vulnerabilidades XSS. Por u ltimo en la m naquina virtual se encuentran instaladas tres aplicaciones web vulnerables para ser usadas con nes did acticos.

2.2.
2.2.1.

Aplicaciones vulnerables (Cross Site Scripting: XSS)


Foro simple vulnerable

En la m aquina modsecurity hay una implementaci on de un foro de juguete en PHP. C odigo fuente en: /var/www/foro

Cuenta con 2 usuarios creados (ana y pepe) ambos con password ssi Desde la m aquina atacante: 1. Abrir la direcci on http://192.168.100.33/foro o http://modsecurity.ssi.net/foro en un navegador WEB 2. Entrar como ana (password ssi) A nadir un mensaje con una parte de su t tulo y otra del cuerpo encerrada entre las etiquetas HTML de texto en negrita: (<b>....</b>) Revisar la lista de mensajes para comprobar que las marcas HTML incluidas en las entradas entrada se copian tal cuales 3. Preparar un ataque de XSS persistente Ana crea otro mensaje nuevo, incluyendo en el texto la siguiente etiqueta <script> con comandos JavaScript <script> alert(esto admite XSS) </script>

Desde otro navegador de la m aquina atacante acceder a la URL http://192.168.100.33/foro o http://modsecurit con las credenciales del usuario pepe (con password ssi) y entrar en el listado de mensajes Se comprueba la ejecuci on del c odigo del ataque XSS preparado por ana Un atacante real (el papel de ana) inyectar a c odigo Javascript m as da nino, normalmente con la nalidad de hacerse con informaci on relevante del usuario atacado (el papel de pepe). T picamente se tratar a de robar cookies o informaci on de la sesi on abierta por el usuario atacado desde su navegador, para almacenarla con la nalidad de suplantar la sesi on de un usuario leg timo o incluso hacerse con el control del navegador del usuario (ver Browser Exploitation Framework (BeEF)).

2.3.
2.3.1.

Aplicaciones vulnerables (Inyecci on SQL)


Inyecci on SQL Foro simple vulnerable

Desde la m aquina atacante Volver a la p agina de inicial del foro: http://192.168.100.33/foro o http://modsecurity.ssi.net/foro Veremos como acceder sin disponer de nombre de usuario ni clave en la p agina de login. Indicar lo siguiente en la casilla usuario: usuario: or 1=1 ; # password: <vac o>

Conrmamos c omo se accede la aplicaci on accede como un usuario autorizado (el primero de la base de datos) En la m aquina modsecurity, comprobar c omo ser a la consulta SQL que usar a esos par ametros (ver el c odigo en /var/www/foro/login.php) root:~# leafpad /var/www/foro/login.php &

2.3.2.

Inyecci on SQL en Wordpress 1.5.1.1

Ejemplo de vulnerabilidad en una versi on antigua del software para blogs WordPress. Los ataques de Inyecci on SQL no tienen por que limitarse al acceso a trav es de campos de formulario. En este caso el c odigo SQL inyectado se incluye en la barra de direcciones (en un par ametro de la URL que se env a en la petici on HTTP GET)

1. Abrir desde el navegador de la m aquina atacante la url del blog: http://192.168.100.33/wordpress o http://modsecuri 2. El usuario y el login de este blog son: usuario: admin passwd: secreto

3. Probaremos la inyecci on SQL sobre los par ametros de la consulta de categorias (http://192.168.100.33/wordpress/?cat= a ) Poner en barra de direcciones: (sin espacios)

http://192.168.100.33/wordpress/index.php?cat=999%20UNION%20SELECT%20null,CONCAT(CHAR(58),user_pass,CHAR(58)

hhttp://modsecurity.ssi.net/wordpress/index.php?cat=999%20UNION%20SELECT%20null,CONCAT(CHAR(58),user_pass,CH

Nota: puede copiarse y pegarse esta URL desde el archivo /root/aplicaciones_vulnerables/wordpress/url-wordp de la m aquina virtual modsecurity b ) Se mostrar a en la columna derecha (zona de lista de categorias) el par:
admin:e201994dca9320fc94336603b1cfc970

c ) Vemos el contenido de la primera la de la tabla de usuarios, con nombre de usuario admin y el md5 de su password Para comprobar que ese es efectivamente es el resumen md5 de la cadena secreto: Buscar la cadena e201994dca9320fc94336603b1cfc970 en google (sale asociado a la palabra secreto) Ejecutar en l nea de comandos: echo -n "secreto" | md5sum

2.4.

Aplicaciones vulnerables educativas

En la m aquina virtual modsecurity se encuentra instaladas tres aplicaciones vulnerables (2 en PHP y 1 en Java) dise nadas para experimentar con ellas. Damm Vulnerable Web App en http://192.168.100.33/dvwa o http://modsecurity.ssi.net/dvwa, con login admin y password password Implementa ejemplos de XSS e inyecci on SQL y otras vulnerabilidades en tres niveles de dicultad Web: http://www.dvwa.co.uk/ Mutillidae (NOWASP) en http://192.168.100.33/mitillidae o http://modsecurity.ssi.net/mutillidae Web: http://sourceforge.net/projects/mutillidae/ WebGoat en http://192.168.100.33:8080/WebGoat/attack o http://modsecurity.ssi.net:8080/WebGoat/attack, con login guest y password guest Instalaci on y arranque: desde el directorio /root/aplicaciones-vulnerables/WebGoat/WebGoat-5.3-RC1 ~:# ./webgoat.sh start8080

Web: https://www.owasp.org/index.php/Category:OWASP WebGoat Project

2.5.

Documentaci on a entregar

3.
3.1.

Ejercicio 2: Instalaci on y experimentaci on con mod-security


Descripci on de mod-security

Resumen mod-security: pdf Web: http://www.modsecurity.org/

3.2.

Instalaci on y conguraci on

1. Instalar los paquetes debian (ya hecho)


apt-get install libapache-mod-security

2. Descargar y descomprimir la reglas del OWASP ModSecurity Core Rule Set Project Descarga: OWASP ModSecurity Core Rule Set Project En la m aquina modsecurity est an en el directorio /root/modsecurity
cd /root/modsecurity tar xzvf SpiderLabs-owasp-modsecurity-crs-v2.2.5.tar.gz mv SpiderLabs-owasp-modsecurity-crs-v2.2.5 /etc/modsecurity/owasp_rules

3. Ajustar la conguraci on por defecto de mod-security e indicar el uso de las reglas


cd /etc/modsecurity cp modsecurity.conf-recommended modsecurity.conf nano modsecurity.conf

Editar modsecurity.conf para a nadir lo siguiente al nal (carga de las reglas OWASP)
# Incluir OWASP Core Rule Set Include "/etc/modsecurity/owasp_rules/modsecurity_crs_10_setup.conf" Include "/etc/modsecurity/owasp_rules/activated_rules/*.conf"

4. Congurar y habilitar las reglas OWASP a utilizar


cd owasp_rules cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf ln -s $PWD/base_rules/* activated_rules

Enlazar en el directorio base_rules los cheros con las reglas a utilizar (en este caso el conjunto de reglas b asico completo) 5. Habilitar el m odulo mod-security en Apache y reiniciar el servidor
a2enmod mod-security /etc/init.d/apache2 restart

Comprobar los cheros /etc/apache2/mods-enabled/modsecurity.load y /etc/apache2/mods-enabled/modsecurity. 5

6. Repetir las pruebas de inyecci on SQL y XSS sobre el foro y wordpress 7. Mod-security estaba congurado en modo detecci on (ver /etc/modsecurity/modsecurity.conf). En /var/log/apache2/ se pueden ver los cheros de log con las reglas activadas (access.log , error.log, modsec_audit.log) 8. Congurar mod-security en modo rechazo y repetir las pruebas de inyecci on SQL y XSS sobre el foro y wordpress Editar /etc/modsecurity/modsecurity.conf para establecer el parametro SecRuleEngine a On Nota: el acceso a las URL debe hacerse con el nombre de la muina modsecurity, no con su direcci on IP. (http://modsecurity.ssi.net/foro, etc)

3.3.

Documentaci on a entregar

<pendiente>

Das könnte Ihnen auch gefallen