SUID
Set User ID (SUID) es un permiso especial en sistemas Unix/Linux. Cuando un archivo tiene el bit SUID establecido, permite que se ejecute con los privilegios de su propietario, independientemente del usuario que lo ejecute. Se suele utilizar para otorgar a usuarios normales permisos elevados temporales para ejecutar tareas específicas.
Indicado por rws
para el permiso del propietario. Cuando el bit SUID (Set User ID) está activado (representado por una s
en lugar de una x
en el permiso de ejecución), cualquier usuario que ejecute este archivo lo hará con los permisos del propietario del archivo. Esto se utiliza comúnmente cuando un archivo es propiedad de root, pero permite que usuarios regulares lo ejecuten con privilegios de superusuario.
Los siguientes tres caracteres (rws
) representan los permisos para el grupo propietario del archivo. Al igual que con los permisos del propietario, se otorgan o deniegan los permisos de lectura (r
), escritura (w
) y ejecución (x
) para el grupo. Cuando el bit GUID (Set Group ID) está activado, el bit de ejecución (x
) para el grupo se reemplaza por una s
, lo que indica que el archivo se ejecutará con los privilegios del grupo propietario.
El GUID es similar al SUID, pero se aplica al grupo. Permite que cualquier usuario que ejecute el archivo lo haga con los permisos del grupo propietario. En este ejemplo, el permiso del grupo incluye una s
, lo que muestra que el bit GUID está activado.
Cómo identificar archivos SUID
Los archivos SUID se pueden identificar buscando archivos con el bit s
en el campo de permiso de ejecución del propietario.
find / -perm -4000 2>/dev/null
Ejemplo:
-rwsr-xr-x 1 root root /usr/bin/passwd
En este ejemplo:
rws
: Indica que el bit SUID está establecido.- El propietario es
root
, lo que significa que cualquier usuario que ejecute este archivo lo hace con privilegios deroot
.
Cómo explotar binarios SUID para escalar privilegios.
Algunos binarios esenciales en sistemas Linux, como su, sudo y passwd, suelen tener el bit SUID activado por defecto. Estos binarios son fundamentales para el funcionamiento del sistema y, en general, se consideran seguros. Sin embargo, el riesgo de vulnerabilidades aumenta cuando se trata de binarios de terceros o menos comunes. Para identificar posibles métodos de explotación, una excelente primera aproximación es consultar GTFOBins, un recurso invaluable que recopila técnicas para aprovechar binarios con permisos especiales, como SUID.
Por ejemplo, si el bit SUID está habilitado en un binario como Python, es posible explotarlo para escalar privilegios en el sistema. A continuación, se describe un caso práctico:
Verificar si Python tiene el bit SUID activado
Para comprobar si Python tiene el bit SUID configurado, ejecuta el siguiente comando:
ls -l /usr/bin/python
Si el bit SUID está activado, verás una salida similar a esta:
-rwsr-xr-x 1 root root /usr/bin/python
La s
en los permisos del propietario (rws) indica que el bit SUID está habilitado.
Explotar Python para escalar privilegios
Si Python tiene el bit SUID activado, podemos ejecutar una línea de código para obtener una shell con privilegios de root:
/usr/bin/python -c 'import os; os.execl("/bin/bash", "bash", "-i")'
Este comando utiliza Python para lanzar una shell interactiva (/bin/bash
) con los permisos del propietario del archivo, en este caso, root
.