На самом деле я обнаружил, что я могу получить доступ к корню через exec в PHP что-то вроде

<?php
   echo exec('cat /etc/passwd');
?>

распечатает содержимое файла passwd, обратите внимание, что с помощью команды cd я могу легко перемещаться туда, где я хочу, так как я могу это исправить? Определение вида виртуального корня, например, ограниченного каталогом actuel

Спасибо !

1 ответ1

0

Файл cat /etc/passwd по умолчанию доступен только для чтения всем пользователям. Файл не содержит критической информации. Это нормальное поведение для пользователя (будь то www-data /apache или кто-либо еще), чтобы иметь возможность просматривать файловую систему. Однако некоторые файлы ограничены для всех пользователей, кроме суперпользователя (root). Если какой-либо процесс в Apache может получить доступ, например, к /etc/shadow вас возникла серьезная проблема с правами доступа, поскольку файл содержит зашифрованные пароли всех пользователей.

Теперь, если вы не хотите, чтобы PHP имел доступ к файловой системе, существует несколько способов противодействия этому поведению. Также обратите внимание, что такое поведение само по себе не является угрозой безопасности, так как права доступа к файлам определяют, кто и что может изменять или просматривать файлы / каталоги.

  1. До PHP 5.4.0 существовал так называемый безопасный режим, который можно было использовать для ограничения доступа пользователей. (у него был ряд проблем и, следовательно, позже он был удален).
  2. Вы можете запретить все команды оболочки (system, exec, passthru).
  3. Используйте open_basedir

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .