Buscar archivos con unos permisos determinados

Publicado el 12 de Diciembre ,2007 por ekhtor

Quizá puede que no tenga gran atractivo el poder buscar archivos en el sistemas que tengan ciertos permisos pero ésta es una buena medida de defensa y ataque.

Si queremos tener nuestro sistema bien seguro tendremos que tener los permisos más restrictivos posibles asique necesitamos saber si tenemos algún archivo que no queremos que pueda ejecutar o editar un usuario. Además puede representar un riesgo de cara a nuestros atacantes tener archivos ejecutables y editables por parte de cualquier usuario o que simplemente tengan el bit SUID o SGID activo. Si tenemos en nuestro sistema un archivo con el bit SUID cuyo propietario es root y además puede ser editado por cualquier usuario, estamos dejando abierta una puerta en nuestro sistema para que cualquiera con los conocimientos suficientes de bash scripting haga un código malicioso y lo ejecute como si fuera root.

Para encontrar estos archivos escribiremos en consola el comando:

find / -perm -X -ls

La X de arriba la sustituiremos por los permisos que queremos encontrar como por ejemplo 4000. Esto indica al find que muestre sólo los archivos que tengan el bit SUID activo (4) y que no tengan permisos para nadie (000).
Otro ejemplo, si quisiéramos buscar un archivo que tuviera permisos de rwx en los usuarios y el bit de SUID activo y ningun permiso más para grupos y otros, cambiaríamos la X por 4700.
En resumen el primer número corresponderá al SUID, SGID o sticky bit. 4 para SUID, 2 para SGID y 1 para stiky bit. Los tres siguientes se corresponden con usuario,grupo,otros.
En el caso de que queramos encontrar un archivo que tenga los permios de SUID,SGID y sticky bit sólo habría que sumarlos, como en los permisos normales por ejemplo:

find / -perm 7000 -ls

Si además queremos que nos muestre los archivos que tengan el SUID y que no tengan permisos de usuario, ni grupo, ni otros ‘o’ los que tengan el SUID y permisos rwx en el usuario, podemos hacer una anidación con un or booleano:

find / \( -perm -4000 -o -perm 4700 \) -ls

Con esto ya estarámos dispuestos para buscar fallos en los permisos y poder hacer un ataque o defendernos de los hackers. Pero una cosa más, cuando lo probéis os daréis cuenta de que salen muchos archivos por pantalla y es muy difícil procesar esa información, asique para hacerlo con más calma podemos redirigir la salida a un archivo en vez de a la pantalla asi:

find / \( -perm -4000 -o -perm 4700 \) -ls > archivo.txt

Por úlmito sólo me queda decir que el comando -ls sirve en este caso para mostrarnos no sólo el nombre de los archivos cuando los encuentre sino los permisos y toda la demás información que nos ofrece ‘ls’.

Entradas Relaccionadas

  1. 2 Respuestas to “Buscar archivos con unos permisos determinados”

  2. Por Paquillo Dubois el 12 Dic, 2007 | Responder

    Genial post! Cada segundo que pasa me gusta más este blog.
    No cambies.

  3. Por ekhtor el 12 Dic, 2007 | Responder

    gracias hombre, espero que la gente se anime a comentar más las entradas y así tener un mejor criterio en la elección de los temas.
    Gracias por tu apoyo!

Publica un comentario

Comenta