Permisos Especiales / SUID


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.


SUID

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:

P7

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

P7i2

Notación Numérica

chmod 4755 archivo_ejecutable

P7i3

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:

  • Algunos comandos de gestión de redes o impresoras pueden tener el permiso SUID para permitir que los usuarios ejecuten esos comandos sin otorgarles acceso completo al sistema.

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.


Buscar permisos SUID

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

Explotación de permisos SUID

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:

P7i5

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.

Contexto

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-xequivalen a 755 para otorgar permisos SUID al binario find agregamos un 4 haciendo referencia a SUID.

P7i6

Riesgo Ahora el usuario sauce por un motivo quiere explotar privilegios a nivel de sudoers (SUID) Página de referencia

P7i7

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.

P7i8

  • find Es el comando utilizado para buscar archivos y directorios en un sistema de archivos.
  • . Es el punto (.) que indica el directorio actual. Aquí se especifica el directorio desde el cual comenzará la búsqueda.
  • -exec Es una opción de find que indica que se ejecutará un comando en cada archivo o directorio encontrado.
  • /bin/sh -p \; Es el comando que se ejecutará en cada archivo o directorio encontrado. En este caso, se está ejecutando el intérprete de comandos /bin/sh con la opción -p, que indica que el intérprete debe ser interactivo y preservar el entorno actual.
  • -quit Es otra opción de find que indica que se debe detener la búsqueda después de procesar el primer archivo o directorio encontrado.

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.

P7i9


Eliminando permisos SUID

P7i10

Material de apoyo

Gmichet

Autodidacta apasionado por la informática y entusiasta de los CTF. Constantemente aprendiendo.

2023 | WhatATheme - A Theme made with by Gmichet Powered by Jekyll