Un vistazo a los permiso SUID (Set user id)
Published on January 10, 2023 by Gmichet
LINUX PERMISOS
4 min READ
El permiso SUID (Set User ID) es una propiedad especial que se puede aplicar a archivos ejecutables en sistemas linux.
El permisos SUID es específico para archivos ejecutables y no se aplica directamente a directorios u otros tipos de archivos. Para habilitar el permiso SUID en un archivo hay diferentes formas:
Notación Simbólica
Una forma de hacerlo es utilizar directamente la opción u+s
la u indica el usuario y la s el permisos SUID.
chmod u+s archivo_ejecutable
Notación Numérica
chmod 4755 archivo_ejecutable
Cuando un archivo tiene el bit SUID establecido, se ejecuta con los privilegios del propietario del archivo en lugar de los privilegios del usuario que lo ejecuta.
El permiso SUID no se recomienda para scripts (.sh) debido a consideraciones de seguridad. El permiso SUID está diseñado para aplicaciones o comandos internos que necesitan ser ejecutados con privilegios elevados pero con restricciones específicas.
El uso de SUID en scripts podría presentar riesgos de seguridad, ya que un script con SUID se ejecutaría con los privilegios del propietario del archivo, lo que podría permitir acciones indeseadas o peligrosas si el script no está correctamente diseñado o protegido.
En cambio, el permiso SUID es más comúnmente utilizado en comandos internos, como programas ejecutables específicos, que necesitan acceder a recursos o realizar tareas que requieren privilegios especiales pero no necesariamente los privilegios completos de administrador.
Ejemplo:
Es importante tener en cuenta que el uso del permiso SUID debe considerarse cuidadosamente y aplicarse solo a los comandos internos que realmente lo requieran.
Con respecto a los scripts Para ejecutar scripts con privilegios elevados, es más recomendable utilizar herramientas como sudo, que proporciona una forma controlada y segura de ejecutar comandos con privilegios administrativos, limitando los riesgos de seguridad asociados con el uso del permiso SUID en scripts.
find / -type f -perm -4000 2>/dev/null
Comando which
Muestra la ruta completa de un comando o programa específico que se ejecuta en la línea de comandos. ejemplo: which python
la salida es usr/bin/python
encontro la ruta del programa.
Comando xargs
Se utiliza para pasar la salida de un comando como argumento a otro comando.
Ejemplo:
En el contexto de la imagen podemos apreciar los permisos asignados al comando find -rwx r-x r-x
que equivalen en notación numérica a 755
.
Supongamos que el usuario sauce le pide a un administrador que asigne privilegios SUID al binario find para que sea capaz de listar o buscar archivos privilegiados. Y en dado caso el administrador asigna esos privilegios (SUID), pensando que con find
no podrá abrir o listar contenido.
Anteriormente planteamos que estos permisos
-rwx r-x r-x
equivalen a755
para otorgar permisos SUID al binario find agregamos un4
haciendo referencia a SUID.
Riesgo Ahora el usuario sauce por un motivo quiere explotar privilegios a nivel de sudoers (SUID) Página de referencia
Gracias a la página de referencia encontro un comando para explotar privilegios SUID a través del binario find /usr/bin/find
. Ahora el usuario sauce es root y sin proporcionar una contraseña.
Conclusión El usuario sauce como ejecuto el comando find
con permisos SUID (Permisos de administrador) lo ejecuto como root de manera privilegiada, y asi como este también podría cambiar las diferentes opciones del comando find.