Abusando de privilegios SUID

¿Qué son los privilegios SUID?

Un privilegio **SUID** (**Set User ID**) es un permiso especial que se puede establecer en un archivo binario en sistemas Unix/Linux. Este permiso le da al usuario que ejecuta el archivo los **mismos privilegios** que el **propietario** del archivo.

Por ejemplo, si un archivo binario tiene establecido el permiso SUID y es propiedad del usuario root, cualquier usuario que lo ejecute adquirirá temporalmente los mismos privilegios que el usuario root, lo que le permitirá realizar acciones que normalmente no podría hacer como un usuario normal.

El abuso de privilegios SUID es una técnica utilizada por los atacantes para elevar su nivel de acceso en un sistema comprometido. Si un atacante es capaz de obtener acceso a un archivo binario con permisos SUID, puede ejecutar comandos con privilegios especiales y realizar acciones maliciosas en el sistema.

Existen dos tipos principales de cuentas de usuario en el sistema operativo Linux:

Cuenta de root: Superusuario que tiene los privilegios más altos y tiene acceso y control ilimitados del sistema.

Cuenta de usuario: Usuarios normales que tienen privilegios limitados que pueden ser definidos por el usuario root.

Cuando se obtiene un shell, es más probable que sea de un usuario o un servicio que tenga privilegios limitados. Para obtener control total del sistema o acceder a cualquier archivo, se requieren privilegios de root. El shell del usuario root puede obtenerse mediante la escalada de privilegios mediante SUID y GUID.

Cómo Detectar SUID y GUID para la Escalada de Privilegios:

SUID: La «s» en el cuarto carácter especifica que el bit SUID está establecido. Este binario se ejecutará como el usuario root, que es el usuario propietario del binario.

GUID: La «s» en el séptimo carácter especifica que el bit GUID está establecido. Este binario se ejecutará como el grupo root, que es el grupo propietario del binario.

¿Cómo encontrar binarios con SUID y GUID establecidos?

Podemos ejecutar el siguiente comando para encontrar todos los binarios SUID

find / -perm -4000 -type f -ls 2>/dev/null

Aquí, estamos utilizando el comando find para buscar cualquier archivo («-type f») con el bit SUID establecido («-perm -4000») en el directorio raíz («/») y descartando todos los errores causados por directorios inaccesibles hacia /dev/null. «-ls» mostrará los resultados en un formato de lista con los permisos mostrados.

De manera similar para GUID, se debe usar

-perm -2000.

¿Cómo Explotar Binarios SUID para la Escalada de Privilegios?

Hay ciertos binarios que tendrán el bit SUID establecido en todos los sistemas Linux, como su, sudo, passwd y gpasswd. Estos son binarios del sistema y casi con seguridad son seguros. Es más probable encontrar una vulnerabilidad en otros binarios no del sistema.

El método exacto de explotación varía entre diferentes binarios. Comprobar si hay algún método de explotación en GTFObins es un buen comienzo.

Algunos Ejemplos Prácticos de Explotación

Escalada de privilegios usando la funcionalidad de binarios SUID (con Python) –
Si python tiene el bit SUID establecido, se puede usar el siguiente comando para generar un shell de root.

python -c ‘import os; os.execl("/bin/sh", "sh", "-p")’

Otro ejemplo, imagina que el comando pexec tiene asignados permisos SUID.SImplemente ejecutando

./pexec /bin/bash -p

podríamos trasnferirnos una bash con privilegios de root.

Escalada de privilegios utilizando exploits conocidos (con exim) –
Después de una búsqueda rápida, se puede encontrar un exploit para CVE-2016-1531. Permite la escalada de privilegios en exim-4.84-3. Usar el exploit resulta en la escalada de privilegios.

También podría interesarte nmap

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio