Возможно ли, чтобы хакеры (или другие) могли загрузить / записать файл php в папку на моем сайте с chmod 777?
Пример:
У меня есть папка с chmod 777. Эта папка содержит изображения. Я использую .htaccess для блокировки индексации папки.
Реформированный вопрос: могут ли люди записывать файл .php в мою папку с chmod 777, используя скрипт PHP на своем веб-сайте? Например, чтобы отобразить все изображения в этой папке
(Я знаком с правильным chmod для загрузки папки и т. Д., Просто прошу его гипотетически)
Шансы очень хорошие, что любой законный пользователь этой машины может писать файлы .php
или что-то еще, что они хотят, в этот широко открытый каталог. Каталог 777
практически не имеет места на общем хосте. ( /tmp
иногда может быть 1777
, чтобы установить липкий бит в каталоге – это позволяет только владельцу файла удалять файл в каталоге. Обычно 777
означает, что любой может удалить любой файл из каталога. Но /tmp
определенно упал в немилость на условиях совместного размещения, поскольку он по своей сути является небезопасным.)
Итак: Вы единственный пользователь на машине? Или эта машина делится с кем-то еще? Поддерживает ли эта машина какие-либо другие службы, кроме веб-сервера? Если это так, эти другие службы могут также представлять собой возможный вектор атаки.
Кроме того, если ваши разрешения установлены в 777
в вашем каталоге, я задаюсь вопросом, насколько безопасны файлы PHP, которые вы используете, – я видел много случаев, когда люди запускали небезопасные PHP-скрипты, которые позволяют злоумышленнику изменять каждый HTML-файл на весь веб-сервер, чтобы заразить людей, просматривающих сайт. (Да, много. Больше, чем горстка.)
Вот почему любая учетная запись пользователя, на которой работает ваш веб-сервер, не должна владеть ни одним из файлов веб-сайта – как статическими страницами, так и динамическими страницами. Веб-сервер должен иметь только достаточные права записи, чтобы писать свой access.log
, error.log
и разговаривать с сервером базы данных. Любые дополнительные привилегии, помимо этого, позволяют легко избавиться от другой неприемлемой ошибки в одном из ваших сценариев, чтобы стать уязвимостью, позволяющей использовать ваш сайт для атаки на других.
777
– плохая идея. Исправьте это. Убедитесь, что ваш веб-сервер не имеет права на запись на любой веб-контент. Убедитесь, что никакая другая служба на сервере не имеет права на запись на ваш веб-контент. Убедитесь, что другие пользователи на сервере не имеют права на запись на ваш веб-контент.
Обновить
Это проще, чем кажется. Создайте нового пользователя webcontent
. Если у вашего веб-сервера уже есть своя группа, давайте использовать его и называть его webgroup
. Если это еще не 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
чтобы убедиться, что он все еще может прочитать все необходимые ему файлы.
Это позволит вашему веб-серверу читать доступ ко всем вашим сценариям и настройкам, но если сам веб-сервер взломан, он не может изменить его.
Есть (по крайней мере) три способа, которыми кто-то может написать в ваш каталог:
PUT
HTTP Пока вы публично не открываете папку в записи, никто не может удаленно изменять содержимое папки. Это независимо от местных разрешений. Установленные локальные разрешения позволяют любому локальному пользователю сервера читать, записывать и выполнять в этой папке, но это не означает, что удаленный злоумышленник может.
Сказав это, избегайте 777
разрешений, если это абсолютно необходимо / безопасно.
Если ваш код находится на общем сервере или сервере с другими сервисами на нем, другие локальные пользователи смогут писать в ваш каталог (если другие пользователи могут спуститься в родительские каталоги).
Вам понадобится больше, чем просто каталог, который доступен для чтения и записи всем (777) для взлома. Использование разрешений 777 обычно указывает на плохое понимание функций безопасности вообще (или лень, когда код необходимо перераспределять, и автор не хочет делать это слишком сложно, объясняя права доступа к файлу для пользователя сценария).