Уязвимость прав доступа к файлам в чистом ftpd с использованием php-скрипта

Я создал ftp-сервер, используя чистый ftpd, следуя этому замечательному учебнику. Все отлично работает, кроме доступа к файлам. Здесь проблема.

Домашняя папка Джо - / var / www / joe, а домашняя папка Стива - / var / www / steve. Когда они входят в систему на сервере ftp, они заходят в свои домашние папки и не могут получить доступ к папкам других пользователей. Но когда Джо пишет скрипт на PHP для доступа к файлу Стива, он может получить к нему доступ. Например, этот скрипт прекрасно работает для Джо:

$filename = "/var/www/steve/somefile";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
echo $contents;

Это проблема ftp-сервера или проблема файла виртуального хоста apache?

Как я могу решить эту проблему? пожалуйста? Это очень срочно, потому что это касается вопроса безопасности пользователей.

Спасибо заранее!

1
задан 3 October 2012 в 17:48

1 ответ

Проблема в HTTP-сервере, так как (по умолчанию) скрипты запускаются от имени пользователя www-data.

Чтобы продолжить аналогию, Стив, вероятно, имеет права доступа к файлу для /var/www/steve/somefile, равные 755, что предоставляет права на чтение и выполнение любому пользователю. Поскольку Apache выполняет PHP-скрипты от имени пользователя www-data, PHP-скрипты не столкнутся с какими-либо проблемами при доступе к файлу.

Стив может запретить другим пользователям видеть его файл, выполнив следующую команду:

chmod 700 /var/www/steve/somefile

Это лишит других пользователей (кроме, конечно, root) возможности доступа к файлу. Обратите внимание, что та же проблема относится к каталогам, и из-за этого другие пользователи могут увидеть, что файл существует (хотя они не смогут прочитать его содержимое).

Некоторые FTP-клиенты предоставляют средства для изменения прав доступа к файлам, поэтому я рекомендую вам обратиться к руководству для вашего FTP-клиента.

Такие инструменты, как Apache suEXEC , приведут к выполнению сценария PHP под реальной учетной записью пользователя, но, конечно, он не защитит от уязвимости, на которую вы ссылаетесь.

0
ответ дан 3 October 2012 в 17:48

Другие вопросы по тегам:

Похожие вопросы: