Возможные атаки

Установка PHP в виде двоичного файла, который взаимодействует с веб-сервером по протоколу CGI, представляет альтернативу интегрированию PHP в серверное ПО наподобие веб-сервера Apache в виде модуля и альтернативу установкам, которым придётся использовать PHP с набором CGI-обёрток, чтобы сделать окружения для скриптов безопасными в части установки утилитами chroot и setuid корневого каталога и идентификатора пользователя, от имени которого выполнится скрипт. При установке PHP в виде CGI-программы исполняемый двоичный файл php часто устанавливают в каталог веб-сервера cgi-bin. Компьютерная группа реагирования на чрезвычайные ситуации (англ. Computer Emergency Response Team, CERT) подготовила рекомендацию » CA-96.11, в которой не советует располагать интерпретаторы в каталоге cgi-bin. Двоичный файл php спроектировали так, чтобы даже при работе в качестве автономного интерпретатора файл защищал от атак, риск которых появляется при установке PHP в режиме CGI:

  • Доступ к системным файлам через запрос вида: http://my.host/cgi-bin/php?/etc/passwd. Информация в query-компоненте, который URL-адрес запроса содержит после вопросительного знака (?), передаётся интерпретатору через CGI-интерфейс как аргументы командной строки. Стандартное поведение интерпретатора — открыть и исполнить в командной строке файл, который указали как первый аргумент запроса. В режиме CGI-обработчика php не станет интерпретировать аргументы командной строки.
  • Доступ к произвольному документу на сервере: http://my.host/cgi-bin/php/secret/doc.html. Информация в path-части URL-адреса наподобие /secret/doc.html, которая идёт после названия двоичного файла PHP, указывает название файла, который CGI-программа откроет и интерпретирует. Отдельные директивы конфигурации наподобие директивы Action в конфигурации веб-сервера Apache указывают, чтобы перенаправить запрос к документам вида http://my.host/secret/script.php к интерпретатору PHP. При такой настройке веб-сервер сначала проверяет права доступа к каталогу /secret, а затем создаёт и перенаправляет запрос к файлу http://my.host/cgi-bin/php/secret/script.php. К сожалению, веб-сервер проверит права доступа только к файлу /cgi-bin/php, но не проверит права доступа к файлу /secret/script.php, если запрос в самом начале задали в полной форме. Поэтому пользователи с доступом к файлу /cgi-bin/php получат доступ к защищённым документам на сервере. Для предотвращения атак, которые направляют на каталоги с ограничениями доступа, если такие содержит дерево документов сервера, в PHP пользуются директивами конфигурации cgi.force_redirect, doc_root и user_dir, которые PHP учитывает при выполнении кода. Подробнее опции и их комбинации рассматривают следующие главы раздела.
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top