SecureBlog | |
Защита директорий и файлов от несакционированного доступа
Дата: 04.05.2008, Категория: Взлома и защита
В продолжение к этому посту. Первый, включить директиву safe_mode в php.iniВ случае, если директива safe_mode установлена значением on, php проверит, совпадает ли владелец скрипта и владелец файла или директории, которыми оперирует скрипт. Например, имеем такие права: -rw-rw-r-- 1 user user 33 Feb 1 20:43 test.phpВ случае выполнения скрипта test.php с содержимым
Мы получим примерно такую ошибку: Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not allowed to access /etc/passwd owned by uid 0 in /home/user/script.php on line 2В данном случае осуществляется проверка на соответствие UID. Так же можно использовать более "мягкую" проверку на соответствие GID. Для этого нужно использовать директиву safe_mode_gid. Вторым вариантом решения, может послужить опция open_basedirВ этом случае, все выполняемые скрипты будут ограничены заданной директорией. Для этого правим в httpd.conf примерно так: В этом случае, при попытке выполнения нашего test.php, мы увидим следующую ошибку: Warning: open_basedir restriction in effect. File is in wrong directory in /home/user/script.php on line 2Третий способ, выключение потенциально опасных функций в phpК таковым относятся, например: dl,exec,passthru,proc_open,proc_close,shell_exec,system и т.д. Запретить их выполнение можно в php.ini disable_functions = readfile, dl, exec, passthru, proc_open, proc_close, shell_exec, systemВ этом случае, результатом выполнения нашего test.php будет следующая ошибка: Warning: readfile() has been disabled for security reasons in /home/user/script.php on line 2Так же не стоит забывать о так называемых псевдонимах функций (alias) [http://securityvulns.ru/news/PHP/alias-pb.html], которые могут помочь злоумышленнику "обмануть" директиву disable_functions. Например: highlight_file() - show_source()Пример кода, эксплуатирующего эту брешь:
Silver Ghost 04.05.2008 c0nst 04.05.2008 Elekt 31.08.2008 |
|