viernes, 14 de diciembre de 2007

Buscar archivos con unos permisos determinados

Fuente: LinuTeca

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’.

1 comentario:

Anónimo dijo...

gracias... me sirvio este post :)