Vamos a realizar varios POST en los que contaremos como escalar privilegios por tener mal configurado los permisos de los archivos en un entorno Unix, en nuestro caso Linux, y es que tenemos que tener cuidado pues la entrada en el sistema puede ser de varias formas (mala contraseña, una aplicación antigua o mal configurada, etc) pero el peligro es que una vez dentro por tener mal configurado los permisos de un archivo se pueda escalar los privilegios a root lo que daremos acceso total.
Para esto hemos escritos los siguientes POST:
- Introducción los permisos de Linux (este POST)
- Problemas con los permisos /etc/passwd
- Escalada mediante error en el SUID
Empezaremos con una introducción a los permisos a Linux de forma que entenderemos mejor los siguientes POST y así podremos comprender más como salvarnos de estos peligros.
En Unix podemos decir que todo es un fichero o directorio, y los permisos son para el usuario (UID), grupo(GID) o el resto de forma que por ejemplo al realizar un comando «ls -l « podemos tener el siguiente resultado de los ficheros /etc/passwd /etc/group y /etc/shadow ademas de ver los identificadores de usuario y grupos.
el primer campo marcaria el tipo de fichero:
- ‘-‘ Un archivo
- ‘d’ Directorio
- ‘b’ Archivo de bloques especiales (Ya comentamos que en Linux todo es un fichero)
- ‘c’ Dispositivos de impresoras, puertos series u otros dispositivos de caracteres. (Todo es un fichero)
- ‘l’ Vinculos o enlaces simbólicos.
- ‘p’ Tuberia o ‘pipe’
Luego los siguientes tres marcan al usuario, luego grupo y por ultimo los permisos del resto. En este caso podemos ver que passwd y group son de lectura y escritura «rw» para el usuario y para el grupo y para el resto solo lectura. Se ve que shadow no tiene ningún permiso para otros.
Faltaría el permiso de ejecución que se vería con una ‘x’ por lo que el significado de los permisos son:
- ‘-‘ Sin permisos
- ‘r’ Lectura
- ‘w’ Escritura
- ‘x’ Ejecución y en el caso de los directorio acceso.
Los comandos para asignar y quitar permisos, así como el cambio de grupo y propietario se usaran: chmod, chgrp y chown aunque no es objeto de este POST explicarlo.
Hasta aquí fácil, pero se complica algo con los siguientes permisos especiales que como veremos en los POST siguientes nos pueden dar problemas. Estos permisos especiales son:
- setuid (bit4) añade propiedades especiales a un fichero ejecutable de usuario, esto es que se ejecuta con los permisos del creador. Si se activa ese permiso cambiara la ‘x’ por la ‘s’. POr lo que debemos tener mucho cuidado si el fichero es del propietario ‘root’ y activamos este bit.
- setgid (bit 2) Adquiere los permisos del grupo.
- sticky bit (bit 1) En este caso no aparece una ‘s’ sino una ‘t’ y se usa en los directorios para que se pueda escribir en ellos pero no borrar.
OJO: Si la letra ‘s’ o ‘t’ aparecen en mayuscula ‘S’ o ‘T’ es que al archivo no se lo otorgo el permiso de ejecución antes que el sticky por lo que no servirá de nada.
Nos vemos en el próximo POST «Escalada de permisos con fichero /etc/passwd«.