martes, 3 de febrero de 2009

Buscar archivos SUID y SGID con find

Para encontrar ficheros o archivos con los bits de permisos suid y sgid activadas, la manera más fácil y rápida es con el comando find:

#> find / -perm -4000 -ls
5931076 96 -rwsr-xr-x 1 root root 90192 oct 11 10:29 /bin/mount
5931116 24 -rwsr-xr-x 1 root root 23156 sep 12 12:13 /bin/mount.cifs3
5931053 24 -rwsr-xr-x 1 root root 20824 sep 6 15:24 /bin/su
5931079 76 -rwsr-xr-x 1 root root 72020 oct 11 10:29 /bin/umount
5931062 32 -rwsr-xr-x 1 root root 32520 sep 19 16:46 /bin/ping
2916530 72 -r-sr-xr-x 1 root root 67080 sep 26 08:31 /sbin/mount.nfs
2916364 20 -rwsr-xr-x 1 root root 18816 sep 20 09:51 /sbin/unix_chkpwd
2916363 16 -rwsr-xr-x 1 root root 13020 sep 20 09:51 /sbin/pam_timestamp_check
5358576 128 ---s--x--x 2 root root 126344 sep 13 11:43 /usr/bin/sudo

Indicamos que find busque desde la raíz '/' del sistema de archivos, todo lo que tenga permisos '-perm' del tipo SUID, es decir '-4000' y despliegue el resultado en formato de ls -l '-ls'

Solo cambiamos un poco para buscar los que tengan el bit SGID:

#> find / -perm -2000 -ls
786770 4 drwxrwsr-x 2 root mail 4096 oct 29 03:51 /var/log/mailman
786768 4 drwxrwsr-x 2 root mail 4096 mar 7 2007 /var/lib/mailman/qfiles
738370 4 drwxrwsr-x 2 root mail 4096 oct 28 21:42 /var/lib/mailman/data
819514 4 drwxrwsr-x 2 root adm 4096 sep 12 12:12 /var/lib/samba/printers/WIN40
134628 4 drwxrwsr-x 2 root mail 4096 jul 27 10:17 /var/spool/mail
2916472 4 -rwxr-sr-x 1 root root 3908 oct 3 16:49 /sbin/netreport
9523868 12 -rwxr-sr-x 1 root tty 8912 oct 11 10:29 /usr/bin/write
9530735 84 -rwsr-sr-x 1 root mail 79944 sep 16 03:17 /usr/bin/procmail
5358037 88 -r-xr-sr-x 1 root games 85536 sep 19 04:55 /usr/bin/same-gnome

O agrupamos los dos permisos entre paréntesis con el caracter de escape '\' y con la opción '-o' que indica 'este o aquel' un or booleno pues.

#> find / \( -perm -4000 -o -perm 2000 \) -ls

Como los listados suelen ser bastante largos, puedes redireccionar la salida del comando a un archivo con '>', para ser analizado con calma.

#> find / \( -perm -4000 -o -perm 2000 \) -ls > archivos_con_suid_sgid.txt

Decide que ejecutables eliminar estos bits, es tedioso, pero tu sistema será mucho más seguro al restringir lo que los usuarios normales pueden ejecutar.

autor: sergio.gonzalez.duran@gmail.com

No hay comentarios: