BoomER - MacOS Rootpipe - BoomerNiX

martes, 30 de octubre de 2018

BoomER - MacOS Rootpipe

En esta ocasión vuelvo a contar con la colaboración de Antonio Marcos, y os vamos a enseñar el uso de un nuevo módulo de nuestra herramienta BoomER.

El módulo va a conseguir una elevación de privilegios en MacOS, el ejemplo que mostramos hace uso del exploit conocido como Rootpipe, el cual nos permitirá obtener acceso como root desde una cuenta sin privilegios.

En resumen, la vulnerabilidad se aprovecha del servicio XPC que forma parte del framework privado SystemAdministration, no es más que una utilidad para mantener separada las operaciones de administración de los binarios que requieren estos permisos. Concretamente, la vulnerabilidad hace uso de la función createFileWithContents:path:attributes la cual permite crear un fichero en cualquier parte, asignándole los permisos que queramos.

El funcionamiento del módulo es muy sencillo, en primer lugar, será necesario indicar el fichero que se va a copiar con permisos los permisos modificados y en segundo lugar habrá que indicar la ruta de destino.


Por defecto, el módulo establece el fichero que se va a copiar a /bin/ksh ya que cuando se realizaron las pruebas se consiguió explotar correctamente la vulnerabilidad usando dicho fichero, sin embargo, se puede modificar al que se desee. Por otra parte, sí que es necesario indicar la ruta donde se almacenará el fichero con permisos de administrador.
Para llevar a cabo esta prueba, se utilizarán los siguientes comandos:


  1. load mac/elevation/rootpipe
  2. put des_file /Users/normal_user/Desktop/root_shell
  3. run

¿Qué hace internamente el módulo rootpipe?

Como se dijo en la explicación del exploit, el módulo no hace más que llamar a la función createFileWithContents:path:attributes del framework SystemAdministration indicándole como fichero de entrada el que se le ha indicado, asociándole los permisos 4777 es decir, con el bit SUID activo y con todos los posibles permisos activos a la ruta de destino que se le indicó.


El código se puede ver en el siguiente enlace de GitHub. Y aquí termina el post de hoy, nos vemos en la siguiente entrada.

No hay comentarios:

Publicar un comentario