web-dev-qa-db-fra.com

Divulgation complète du chemin sur rss-functions.php

J'étais en train d'exécuter des tests de sécurité sur mes applications WordPress et j'ai remarqué qu'elles ont toutes un chemin d'accès complet sur l'URL suivante. Je suis sûr que l'on a déjà répondu à cette question mais je ne trouve aucune information à ce sujet.

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

Le message d'erreur lorsque vous accédez au lien est Appel à la fonction non définie _deprecated_file () dans /home/mydomain/public_html/wp-includes/rss-functions.php à la ligne 8.

Je n'ai rien dans mes thèmes pour RSS.

Edit: Après des recherches approfondies, cela semble être un problème courant sur la plupart des sites WordPress. Les solutions que j'ai trouvées en ligne ne résolvent pas réellement l'erreur. Ils disent simplement de cacher le rapport d'erreur dans le fichier php.ini. Cela ne résout pas le problème et tout le monde n'a pas accès au fichier php.ini en fonction de la situation de leur hébergement.

8
JediTricks007

Les fichiers PHP dans le répertoire wp-includes ne doivent pas être accessibles de l'extérieur, ils doivent uniquement être inclus avec du code wordpress. Par conséquent, une solution simple consiste à utiliser des règles .htaccess pour bloquer l’accès aux fichiers * .php situés dans le répertoire wp-includes.

5
Mark Kaplun

C'est pratiquement la seule option pour désactiver la journalisation des erreurs/avertissements php. Il y a 2 options pour le faire et une autre qui n'est pas très bonne:

  • php.ini - dans la plupart des hébergements, vous pouvez modifier php.ini (même en hébergement partagé) - .htaccess
  • directement dans les fichiers php (non recommandé)

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

1
adiian

Display_errors doit être désactivé sur un site Web en production.

WP Scan accède directement à wp-includes/rss-functions.php, et c'est son code source, à partir de 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' );

Lorsqu’on y accède directement, la fonction _deprecated_file() n’existe pas et génère une erreur fatale.

La solution consiste à désactiver display_errors au niveau du serveur. Si votre PHP s'exécute sous mod_Apache, vous pouvez le faire en ajoutant cette ligne à votre fichier .htaccess principal:

php_flag display_errors off

Si vous utilisez PHP-FPM, vous devrez probablement remplacer php.ini dans votre dossier local public_html.

En outre, WordPress est conscient de cela:

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

0
Lucas Bustamante