
Hace unos meses
avisamos de que Mac OS X se veía afectado por una vulnerabilidad en sudo desde su versión
1.6.0 hasta la
1.7.10p y desde la
1.8.0 hasta la
1.8.6p. La vulnerabilidad tiene asignado desde hace tiempo el siguiente
CVE-2013-1775 y en él se describe como este
bug permite a un atacante realizar un
bypass de las restricciones de tiempo que tiene
sudo realizando una elevación de privilegios sin volver a autenticar al usuario. En otras palabras, si el atacante consigue una
shell con un usuario perteneciente al grupo
admin, para poder realizar alguna acción como
root deberá autenticarse con
sudo, por norma general.
Gracias
al módulo de Metasploit que se presenta en este artículo nos saltaremos la restricción de tiempo, por lo que podremos ejecutar acciones como
root en la máquina sin conocer la credencial del usuario. El
exploit es de tipo
local, ya que necesitamos tener una sesión en dicha máquina para poder ejecutarlo. Los requisitos, aparte de la versión de
sudo, del
exploit son que el usuario que el atacante controla debe pertenecer a
admin y haber realizado alguna acción con
sudo en algún instante anterior. Vamos a explicar paso a paso una pequeña
PoC donde se verá claramente el funcionamiento del módulo y la explotación de la vulnerabilidad.
PoC: Ganando privilegios en un Mac OS X
En primer lugar debemos conseguir una
shell en el equipo remoto, este hecho puede lograrse de muchas maneras, una de ellas y dado que en el año
2013 Java está teniendo muchos problemas de seguridad, sería utilizar algún
bug conocido de
Java como por ejemplo
los fallos de Java 7, el
ProviderSkeleton Insecure Invoke Methods o los
19 bugs críticos solventados en una actualización. Otra vía sería preparar un ejecutable que contenga como
shellcode una
shell inversa y mediante ingeniería social "
colar" dicho código o algún ejecutable no malicioso que invocara al malicioso.
Para crearnos un ejecutable con una shell inversa utilizaremos la herramienta msfpayload. A esta herramienta le pasamos el nombre del payload que queremos incluir en el binario y los parámetros necesarios para que la shellcode "vuelva a casa", en este caso LHOST y LPORT.
 |
Figura 1: Creación de binario con shell inversa |
Una vez la víctima ejecute, de alguna manera dicho código, obtendremos una
shell en el
Mac OS X.
¿Qué usuario seremos? Pues sencillamente con el que el binario se haya ejecutado. Para recibir la conexión del binario utilizaremos el módulo
exploit/multi/handler, el módulo para todo de
Metasploit.
 |
Figura 2: Ejecución exploit/multi/handler |
Es importante saber la versión de
sudo, para
comprobar si es vulnerable o no al módulo de elevación de privilegios. Para ello, en la propia shell que nos devuelve el anterior código, lanzamos un
sudo -V.
 |
Figura 3: Comprobación de versión de sudo |
Según el
CVE de la vulnerabilidad la aplicación
sudo de este
Mac OS X es vulnerable, pero aún falta confirmar si el usuario ha ejecutado sudo con anterioridad en esta máquina. El encargado de comprobarlo será el propio
exploit de
Metasploit. Si todo va bien, el módulo nos devolverá una nueva sesión con una
shell donde seremos
root.
Ahora, utilizaremos el módulo de elevación de privilegios
Sudo Password Bypass. El único parámetro básico que debemos indicar en el módulo es
SESSION. Este parámetro se refiere a la sesión activa sobre el
Mac OS X, por lo que le asignamos el
ID de la sesión que tenemos y lanzamos
exploit.
 |
Figura 4: Explotación de vulnerabilidad de sudo |
Si quieres puedes comprobar si tu
Mac OS X es vulnerable a este fallo de seguridad lanzando el comando en tu equipo, pero ya te decimos que a día de hoy todos son vulnerables.
 |
Figura 5: Comprobación de versión de sudo en OSX Mountain Lion 10.8.4 |
Como se puede comprobar ahora somos
root en la nueva sesión de
shell que tenemos. La mitigación de esta vulnerabilidad no debe ser compleja a día de hoy, ya que se disponen de versiones superiores a la
1.8.6p en el
sitio web de sudo pero al ser un módulo paquetizado por
Apple deberemos esperar a que la compañía lo distribuya en la próxima actualización
. Si quieres aprender más cosas acerca de
Metasploit no dudes en utilizar el libro de
Metasploit para Pentesters de nuestro compañero
Pablo González.