Могут ли люди писать a.php файл в мою папку chmod 777


Могут ли хакеры (или другие) загружать/записывать php-файл в папку на моем сайте с chmod 777?

Пример:

У меня есть папка с chmod 777. Эта папка содержит изображения. Я использую .htaccess, чтобы заблокировать индексирование папки.

Исправленный вопрос: Могут ли люди записать файл .php в мою папку с chmod 777, используя PHP-скрипт на своем веб-сайте? Например, чтобы перечислить все изображения в этой папке

(Я знаком с правильным chmod для загрузки папки и т. Д., Просто гипотетически спрашивая об этом)

Author: hakre, 2011-11-14

3 answers

Очень велика вероятность того, что любой законный пользователь этой машины сможет записать .php файлы или что-либо еще, что они захотят, в этот широко открытый каталог. Каталог 777 почти не имеет места на общем хосте. (/tmp иногда может быть 1777, чтобы установить бит привязки к каталогу - это позволяет только владельцу файла удалять файл в каталоге. Обычно 777 означает, что любой может удалить любой файл из каталога. Но /tmp определенно потерял популярность на общем хостинге среды, потому что это по своей сути небезопасно.)

Итак: Вы единственный пользователь на этой машине? Или эта машина используется совместно с кем-либо еще? Работает ли на этой машине какие-либо другие службы, кроме веб-сервера? Если это так, то эти другие сервисы также могут представлять возможный вектор атаки.

Кроме того, если ваши разрешения установлены на 777 в вашем каталоге, мне интересно, насколько безопасны PHP-файлы, которые вы запускаете - я видел много случаев, когда люди запускали небезопасные PHP-скрипты, которые позволяют злоумышленник изменяет каждый HTML-файл на всем веб-сервере, чтобы заразить людей, просматривающих сайт. (Да. Многие. Намного больше, чем горстка.)

Вот почему любая учетная запись пользователя, под которой работает ваш веб-сервер, не должна владеть ни одним из файлов веб-сайта - как статическими, так и динамическими страницами. У веб-сервера должно быть достаточно прав на запись только для записи его access.log, error.log, и поговорите с сервером базы данных. Любые дополнительные привилегии, выходящие за рамки этого, значительно облегчают в противном случае доброкачественная ошибка в одном из ваших скриптов может стать уязвимостью, которая позволяет использовать ваш сайт для атаки на других.

777 это плохая идея. Исправь это. Убедитесь, что у вашего веб-сервера нет разрешения на запись какого-либо веб-контента. Убедитесь, что ни у одной другой службы на сервере нет разрешения на запись вашего веб-контента. Убедитесь, что у других пользователей на сервере нет разрешения на запись вашего веб-контента.

Обновление

Это проще, чем это звуки. Создайте нового пользователя webcontent. Если у вашего веб-сервера уже есть собственная группа, давайте используем ее и назовем webgroup. Если это еще не так, создайте также новый webgroup. (adduser(8) и addgroup(8), если ваш VPS не имеет собственного механизма.) Затем установите владельца для всего вашего веб-контента:

chown -R webcontent:webgroup /path/to/web/content

Исправить разрешения:

find /path/to/web/content -type d -print0 | xargs -0 chmod 750
find /path/to/web/content -type f -print0 | xargs -0 chmod 640

Затем убедитесь, что ваш веб-сервер использует Group webgroup директива, гарантирующая, что он все еще может читать все необходимые файлы.

Это позволит вашему веб-сайту у сервера есть доступ для чтения ко всем вашим сценариям и конфигурации, но если сам веб-сервер взломан, он не сможет ничего изменить.

 16
Author: sarnold, 2011-11-13 22:59:28

Существует (по крайней мере) три способа, которыми кто-то может написать в ваш каталог:

  • Если у них есть локальный контроль над сервером (например, через терминал)
  • Если ваш веб-сервер поддерживает и разрешает PUT HTTP-метод
  • Если у вас есть скрипт, который позволяет людям загружать файлы в этот каталог

До тех пор, пока вы не предоставите доступ к папке для записи, никто не сможет удаленно изменять содержимое папки. Это происходит независимо от локальных разрешений. То установленные вами локальные разрешения позволяют любому локальному пользователю сервера читать, записывать и выполнять в этой папке, но это не означает, что удаленный злоумышленник может это сделать.

Сказав это, избегайте разрешений 777, если только абсолютно не необходимо/безопасно.

 12
Author: DaveRandom, 2011-11-13 22:20:09

Если ваш код находится на общем сервере или сервере с другими службами на нем, другие локальные пользователи могли бы записывать в ваш каталог (если другие пользователи могут спускаться в родительские каталоги).

Для взлома вам понадобится нечто большее, чем просто каталог, доступный для чтения и записи всеми (777). Использование разрешений 777 обычно указывает на плохое понимание функций безопасности вообще (или лень, когда код необходимо распространять, а автор не хочет усложнять задачу, объясняя права доступа к файлам пользователю скрипта).

 7
Author: Lekensteyn, 2011-11-13 22:15:14