web-dev-qa-db-ja.com

Rss-functions.phpに関するフルパス開示

私は私の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にアクセスできるわけではありません。

8
JediTricks007

Wp-includesディレクトリにあるPHPファイルは、外部からアクセスできないようにする必要があります。それらはワードプレスコードによってのみ含まれるべきです。そのため、これに対する簡単な修正は、.htaccessルールを使用して、wp-includesディレクトリの下にある* .phpファイルへのアクセスをブロックすることです。

5
Mark Kaplun

Phpのエラー/警告ログを無効にすることが、実質的に唯一の選択肢です。それには2つの選択肢があり、もう1つはそれほど良くありません。

  • php.ini - ホスティングのほとんどであなたはphp.iniを変更することができます(共有ホスティングでも) - .htaccess
  • phpファイルに直接(推奨されません)

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

1
adiian

Display_errors 本番Webサイトでは無効にする必要があります。

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-directly-loading-certain-files

0