Muy buenas a todos! Hoy queremos hablarles sobre escalada de privilegios, en particular sobre el sistema operativo Ubuntu 20.04, su versión LTS más reciente, lanzada a comienzos de este año. Hace algunos días el investigador de seguridad de GitHub, Kevin Backhouse, ha publicado un artículo en el cual informa que ha descubierto una manera muy sencilla de obtener una cuenta con permisos root a partir de un usuario sin privilegios.
Podríamos pensar que para poder elevar privilegios en un sistema operativo tan moderno necesitaríamos un exploit con varias líneas de código, pero sorprendentemente para llevar a cabo el proceso sólo se hace uso del entorno gráfico, unos pocos comandos, una denegación de servicio y mucho ingenio.
Según explica el investigador, utilizando la terminal desde un usuario sin privilegios se crea un enlace simbólico en su propio home llamado .pam_environment que apunta a /dev/zero
$ ln -s /dev/zero .pam_environment
Posteriormente se debe ingresar a las opciones de Configuración Regional e Idioma para cambiar el lenguaje del sistema.
Seleccionamos una nueva configuración de idioma |
Captura comando top. Notar el elevado uso de CPU |
$ rm .pam_environment
$ kill -SIGSTOP <PID>
Ahora es cuando hacemos la fantasía y prepararemos el terreno para luego cerrar la sesión. Lo primero que haremos es indicar una secuencia de comandos dentro de una shell. Entre los comandos debemos definir un timer que al finalizar dará lugar a la ejecución del comando kill con la señal SIGSEGV y luego nuevamente kill pero esta vez con la señal SIGCONT, ambos sobre el proceso en cuestión. Como todo esto queremos que se realice mientras estamos cerrando la sesión, haremos uso del comando nohup. Es importante que el tiempo definido sea suficiente para que nos permita completar el proceso para cerrar la sesión actual.
$ nohup bash -c "sleep 30s; kill -SIGSEGV <PID>; kill -SIGCONT <PID>"
Plantando la bomba |
Una vez completado el proceso de cierre de sesión, y si todo sale bien, luego de unos segundos se nos presentará un asistente, con varios cuadros de diálogo, como el que debemos completar luego de instalar el Sistema Operativo y dentro del cual tendremos que crear un usuario.
Creamos un nuevo usuario mediante el asistente |
Grupos a los que pertenece el usuario creado |
Este método se aprovecha de dos bugs recientemente reportados que involucran al servicio de manejo de cuentas de usuario (accountsservice) y al servicio que maneja la pantalla de login (gdm3). En el primer caso los CVE involucrados son CVE-2020-16126 y CVE-2020-16127, mientras que en el segundo hacemos uso de CVE-2020-16125. Según reconoce el autor en su artículo, descubrió el proceso de forma casi accidental, lo que hace la historia aún más curiosa...
A escalar privilegios y hasta el próximo post!
No hay comentarios:
Publicar un comentario