В Drupal 7, как предотвратить загрузку файлов *.php в папку /files, когда для этого требуются разрешения 777?


Привет, один из сайтов, над которым я работал совсем недавно, был включен, и куча php-файлов каким-то образом была загружена в папку "Файлы" и начала рассылать много спама. Я знаю, что во время установки они просят установить для папки "Файлы" разрешения 777, но есть ли способ предотвратить запуск любых php-скриптов в этом каталоге, если они когда-либо будут загружены.

screenshot

Author: kiamlaluno, 2013-01-15

1 answers

При загрузке файлов Drupal (в ядре или модулях) следует использовать file_save_upload, который сам также вызывает имя файла file_munge_filename. Вместе эти две функции должны гарантировать, что даже если файл содержит php, он не будет назван так, как их выполнял бы обычно настроенный веб-сервер. Они также имеют защиту от файлов pl|py|cgi|asp|js, которые часто могут содержать код.

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

  1. Уязвимость в модуле, позволяющая произвольно загружать файлы
  2. Уязвимость в каком-либо другом коде, запущенном на сервере (за пределами Drupal)
  3. Небезопасная конфигурация (позволяющая пользователям запускать php) использовалась для прямой загрузки этих файлов, избегая API Drupal.
  4. Атака, в которой использовался вирус для считывания сохраненных паролей (например, из Filezilla) на вашем локальном компьютере - они встречаются чаще, чем вы думаете, но они обычно не нацелены на каталог файлов.

Я предлагаю сделать несколько вещей:

  • Проверьте права доступа и права собственности на файлы, это поможет вам узнать, какой пользователь веб-сервера загрузил файлы, и оттуда вы, надеюсь, сможете сузить, какой код использовался для их загрузки. Или, если вы заметили, что они принадлежат определенному пользователю unix, отличному от веб-сервера, то вам следует беспокоиться об этой учетной записи.
  • Проверьте, когда были созданы файлы - просмотрите резервные копии чтобы узнать, когда они появились, или проверить временные метки файла (хотя в большинстве ОС вы можете указать только последний измененный файл, а не созданную временную метку файла)
  • Проверьте журналы apache на наличие всех обращений к этим файлам и посмотрите, какой IP обращается к ним и когда (особенно первая дата доступа)
  • Проверьте журналы apache на наличие других обращений к вашему сайту с этих IP-адресов и в эти даты

Эти этапы расследования призваны помочь сузить круг способов загрузки файлов. В идеале вы найдете какое-то конкретное событие (например, СООБЩЕНИЕ на какой-либо URL-адрес на вашем сайте, которое вы исследуете и видите, является способом выполнения php, что-то вроде проблемы с модулем CKEditor/FCKeditor, тогда вы можете знать, как использовался ваш сайт.

Если вы действительно узнаете, как был использован сайт, пожалуйста, сообщите об этом как о проблеме безопасности: http://drupal.org/node/101494

 9
Author: greggles, 2013-01-16 14:43:26