rss-functions.php上的完整路径公开


8

我在WordPress应用程序上进行了一些安全测试,并注意到所有这些应用程序都在以下URL上公开了完整路径。我敢肯定这已经得到回答,但是我找不到任何信息。

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

转到链接时的错误消息是第8行/home/mydomain/public_html/wp-includes/rss-functions.php中对未定义函数_deprecated_file()的调用

我的RSS主题没有任何内容。

编辑:经过进一步研究,这似乎是大多数WordPress网站上的常见问题。我在网上找到的解决方案实际上并未解决该错误。他们只是说要在php.ini中隐藏错误报告。但这并不能解决问题,并非每个人都可以根据托管情况访问php.ini。


这不是安全问题。
fuxia

4
恕我不能赞同。完整的路径对于攻击者而言是非常有价值的信息。
JediTricks007

只要确保正确设置了文件权限,并且没有任何权限的任何人都无法使用该信息。如果您的站点由于暴露本地路径而容易受到攻击,那么您将面临更多重要问题。
fuxia

2
我的文件权限设置正确。我不想表明这一点,并认为这是一个有效的关切。我认为,如果可以防止采用简单的方法来查找网站的完整路径,那将是一件积极的事情。根据owasp的说法,某些攻击要求攻击者知道他们希望查看的完整路径。因此,不向攻击者显示该信息很重要。
JediTricks007

Answers:


5

不应从外部访问wp-includes目录中的PHP文件,而应仅将它们包含在wordpress代码中。因此,一个简单的解决方法是使用.htaccess规则来阻止对wp-includes目录下的* .php文件的访问


1
您能举一个这样的.htaccess示例吗?
卢卡斯·布斯塔曼特


0

在生产网站上应禁用Display_errors

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,则可能会在本地public_html文件夹中覆盖php.ini。

此外,WordPress意识到:

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


-1

从理论上讲,如果您以“正确的Wordpress方式”进行操作,那么我要告诉您的是危险的,可能不应该这样做。

实际上,这适用于我们的生产环境。

该文件rss-functions.php已弃用,并重定向到rss.php

rss.php从v3.0.0版本开始不推荐使用该文件,内部注释建议您改用SimplePie。

因此,只要您没有旧的旧安装,并且没有依赖此文件的插件,rss-functions.php就可以安全删除该文件。

或者,在该文件中注释掉第8行。


从安全的角度来看,您也应该绝对实现上述@MarkKaplun的建议,因为该文件并非旨在由浏览器直接击中。


顺便说一句,我同意你的看法,即泄露全部路径会带来安全风险;因此,我们将WEBROOT排除在自定义路径之外。


2
不管好坏,删除或更改核心文件绝不是解决方案。
马克·卡普伦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.