
Escalada de privilegios local a root mediante Sudo chroot en Linux
Escalada de privilegios locales a root mediante sudo chroot en Linux.
Para leer la noticia, aquí:
TL;DR y CMIIW Entonces, sudo es un comando para ejecutar un comando como administrador/root. Un usuario puede ejecutar sudo si pertenece al grupo sudoers. Pero hay un error en el binario sudo que permite a un usuario normal sin permiso ejecutar sudo y cambiar de usuario a root.
El error está en la opción de comando sudo --chroot. Este chroot permite ejecutar un comando en un directorio temporal. El problema es que sudo verifica el archivo de configuración dentro de ese directorio temporal, antes de comprobar si el usuario puede ejecutar sudo o no.
Si de alguna manera podemos editar este archivo de configuración y redirigirlo a un código modificado para obtener acceso root, podemos conseguir acceso root sin necesidad de autenticación ni estar registrado como sudoer. Porque en el proceso, para obtener esa información, el sistema ejecuta el comando como root (temporalmente).
¿Qué archivo de configuración es? /etc/nsswithc.conf. Este archivo de configuración lo usa el sistema para saber, por ejemplo, a qué grupo pertenece un usuario, etc. Dentro del archivo nsswitch se ve más o menos así:
<database> <source1> <source2> ... <sourcen>
passwd files systemd
group files systemd
shadow files
gshadow files
...
¡Nah! Si la fuente de datos utilizada es files, nss llamará a una biblioteca llamada libnss_files.so.2. Este archivo contiene código C, y si lo editamos, es muy probable que podamos obtener acceso root. Porque el sistema lo ejecuta como root aunque el comando no lo ejecute un usuario sudoer. Se puede ver en el archivo exploit.sh
En resumen:
/etc/nsswitch.conf, en una carpeta que controlamos.