Полное раскрытие пути на rss-functions.php

8

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

https://mydomains.com/wp-includes/rss-functions.php

Сообщение об ошибке при переходе по ссылке: вызов неопределенной функции _deprecated_file () в /home/mydomain/public_html/wp-includes/rss-functions.php в строке 8

У меня нет ничего в моих темах для RSS.

Изменить: После дальнейших исследований это, кажется, является общей проблемой на большинстве сайтов WordPress. Решения, которые я нашел в Интернете, на самом деле не исправляют ошибку. Они просто говорят, чтобы скрыть сообщения об ошибках в php.ini. Это не исправляет это, и не у всех есть доступ к php.ini в зависимости от их ситуации хостинга.

JediTricks007
источник
Это не проблема безопасности.
Fuxia
4
Я не согласен с вами. Полный путь очень важная информация для злоумышленников.
JediTricks007
Просто убедитесь, что права доступа к файлам установлены правильно, и эта информация бесполезна для всех без этих разрешений. Если ваш сайт уязвим, выставляя локальный путь, у вас есть гораздо более важные проблемы.
Fuxia
2
Мои права доступа к файлам установлены правильно. Я не хочу, чтобы это показывалось и я думаю, что это серьезная проблема. Я думаю, что если я смогу помешать простому способу найти полный путь к моему сайту, это будет позитивно. Согласно owasp некоторые атаки требуют, чтобы злоумышленник знал полный путь, который он хочет просмотреть. Поэтому важно не показывать эту информацию злоумышленнику.
JediTricks007,

Ответы:

5

Файлы PHP в каталоге wp-include не должны быть доступны извне, они должны быть включены только с помощью кода WordPress. Это легко исправить, используя правила .htaccess для блокировки доступа к файлам * .php, которые находятся в каталоге wp-includes

Марк Каплун
источник
1
Можете привести пример такого .htaccess?
Лукас Бустаманте
1

Это практически единственный вариант, чтобы отключить запись ошибок / предупреждений в php. Есть 2 варианта сделать это и еще один, который не так хорош:

  • php.ini - на большинстве хостингов вы можете изменить php.ini (даже на виртуальном хостинге) - .htaccess
  • непосредственно в файлах php (не рекомендуется)

http://phphtml.info/how-to-fix-wordpress-internal-pathfull-path-disclosurefpd-issue/

adiian
источник
0

Ошибки отображения должны быть отключены на рабочем сайте.

WP Scan обращается wp-includes/rss-functions.phpнапрямую, и это его исходный код, начиная с WordPress 4.9.7:

<?php
/**
 * Deprecated. Use rss.php instead.
 *
 * @package WordPress
 */
_deprecated_file( basename(__FILE__), '2.1.0', WPINC . '/rss.php' );
require_once( ABSPATH . WPINC . '/rss.php' );

Когда к нему обращаются напрямую, _deprecated_file()функция не существует, поэтому она выдает фатальную ошибку.

Решение состоит в том, чтобы отключить display_errorsна уровне сервера. Если ваш PHP работает под mod_apache, вы можете сделать это, добавив эту строку в ваш основной файл .htaccess:

php_flag display_errors off

Если вы используете PHP-FPM, вам, вероятно, придется переопределить php.ini в вашей локальной папке public_html.

Также WordPress знает об этом:

https://make.wordpress.org/core/handbook/testing/reporting-security-vulnerabilities/#why-are-there-path-disclosures-when-directly-loading-certain-files

Лукас Бустаманте
источник
-1

Теоретически, то , что я собираюсь вам сказать, опасно и, вероятно, не должно быть сделано, если вы делаете вещи «правильным способом Wordpress».

Практически это работает для нашей производственной среды.

Файл rss-functions.phpустарел и перенаправляет на rss.php.

rss.phpНачиная с версии 3.0.0, файл устарел, и внутренние комментарии рекомендуют использовать вместо него SimplePie.

Таким образом, файл rss-functions.phpможно безопасно удалить, если у вас нет старой, устаревшей установки и если у вас нет плагинов, которые зависят от этого файла.

Или закомментируйте строку 8 в этом файле.


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


Кстати, я согласен с вами, что разглашение полного пути является угрозой безопасности; По этой причине мы держим WEBROOT по индивидуальному пути.

ХАЗ
источник
2
к лучшему и худшему, удаление или изменение основных файлов никогда не является решением.
Марк Каплун