Spiga

Bit SUID, ¿cómo localizar ficheros que lo tengan activado?

Hola!

Hoy he aprendido un truco que me ha parecido muy interesante en el libro Seguridad en Redes, de Andrew Lockhart.

Tiene que ver con la localización de ficheros que tenga activado el bit SUID. Pero... ¿qué es el bit SUID? Vamos a la wikipedia:

Normalmente este bit se activa en ejecutables. Cuando a un ejecutable binario se le asigna el atributo setuid, usuarios normales del sistema pueden ejecutar ese archivo y obtener privilegios del usuario que posee dicho archivo (generalmente, root) en el proceso creado. Cuando el proceso obtiene privilegios de administrador, la aplicación puede realizar tareas en el sistema que usuarios normales generalmente no podrían hacer.

Si un fichero tiene activado el bit "Setuid" se identifica con una “s” en un listado de la siguiente forma:

-rwsr-xr–x 1 root shadow 27920 ago 15 22:45 /usr/bin/passwd

Por ejemplo el bit setuid se utiliza en el fichero /usr/bin/passwd para que todo el mundo pueda cambiar su contraseña de forma controlada. Pudiendo ejecutar este programa se consigue que un usuario pueda escribir en el fichero de claves(/etc/passwd) pero sin tener que dar permisos de escritura al fichero, lo cual seria un gran agujero de seguridad

Hasta aquí todo ok, pero...

Aunque la característica setuid es muy útil en muchos casos, puede plantear un riesgo de seguridad si el atributo setuid se asigna a programas ejecutables que no fueron diseñados cuidadosamente. Los usuarios pueden explotar una vulnerabilidad en programas defectuosos para conseguir privilegios elevados permanentemente.

Además, es probable que un atacante que ya haya obtenido privilegios de administrador pueda crear puertas traseras ocultas en ficheros ejcutables SUID o SGID, que distribuya por el sistema de archivos para obtener acceso en el futuro.

¿Cómo localizamos estos ficheros en nuestro sistema?

Usando la orden #find / \( -perm -4000 -o -perm -2000 \) -type f -exec ls -la {} \;

Saludos!

0 comentarios: