Назад | Перейти на главную страницу

При каких условиях в установках Apache требуется приложение AddHandler / x-httpd-php .php?

Я исследователь безопасности, который сталкивался с множеством случаев, когда формы загрузки файлов могут быть использованы, что позволяет серверу интерпретировать управляемый злоумышленником код PHP, что приводит к удаленному выполнению кода. Основная причина этой уязвимости, по-видимому, заключается в устаревшем параметре, который включен по умолчанию в конфигурации Apache следующих дистрибутивов Linux:

и, возможно, другие. Настройка:

AddHandler application/x-httpd-php .php

Эффект этого параметра, который вызывает беспокойство, заключается в том, что он сообщает серверу, что файлы с соответствующими именами \ .php следует интерпретировать как код PHP. Если злоумышленник загружает изображение с именем shell.php.jpg со встроенным в него PHP-кодом и переходом на страницу сервер выполнит сценарий как пользователь сервера.

Мое рекомендуемое решение - отключить этот параметр, закомментировав его. Я считаю, что файлы .php уже имеют встроенный в Apache неявный обработчик, который сообщает серверу интерпретировать код как php, поэтому этот параметр мне кажется избыточным. У меня такое ощущение, что это устаревшая настройка, перенесенная со старых версий CentOS и RedHat, а в новейших версиях этот параметр отсутствует.

У меня вопрос: При каких обстоятельствах отключение этой настройки нарушит функциональность?

Я считаю, что файлы .php уже имеют встроенный в Apache неявный обработчик, который сообщает серверу интерпретировать код как php.

Насколько я знаю, неявного обработчика нет, это AddHandler команда - это то, что сообщает apache передавать файлы с .php расширение application/x-httpd-php обработчик (mod_php)

Однако в целом вы правы. Это (по-видимому) малоизвестная особенность mod_mime что файлы с несколькими расширениями имеют ВСЕ расширения, проверенные на наличие обработчиков и другой информации. Документация Apache предлагает заменить эту директиву на:

<FilesMatch \.php$>
  SetHandler application/x-httpd-php
</FilesMatch>

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

Однако лучшим решением было бы хранить ненадежные загруженные пользователем файлы вне DocumentRoot где браузеры не могут запрашивать script.php.jpg (или отправьте ссылки по почте http://www.example.com/uploads/thisisreallyyourbank.html)