Revelación de ruta completa en rss-functions.php

8

Estaba ejecutando algunas pruebas de seguridad en mis aplicaciones de WordPress y noté que todas ellas tienen una divulgación de ruta completa en la siguiente URL. Estoy seguro de que esto ha sido respondido antes, pero no puedo encontrar ninguna información al respecto.

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

El mensaje de error al ir al enlace es Llamada a la función indefinida _deprecated_file () en /home/mydomain/public_html/wp-includes/rss-functions.php en la línea 8

No tengo nada en mis temas para RSS.

Editar: después de una mayor investigación, este parece ser un problema común en la mayoría de los sitios de WordPress. Las soluciones que encontré en línea en realidad no corrigen el error. Simplemente dicen que oculte el informe de errores en php.ini. Sin embargo, eso no lo soluciona y no todos tienen acceso a php.ini dependiendo de su situación de alojamiento.

JediTricks007
fuente
Esto no es un problema de seguridad.
fuxia
44
No estoy de acuerdo contigo. El camino completo es información muy valiosa para los atacantes.
JediTricks007
Solo asegúrese de que los permisos del archivo estén configurados correctamente, y que la información sea inútil para cualquier persona sin esos permisos. Si su sitio es vulnerable al exponer la ruta local, tiene problemas mucho más importantes.
fuxia
2
Mis permisos de archivo están configurados correctamente. No quiero que esto se muestre y creo que es una preocupación válida. Creo que si puedo evitar una manera fácil de encontrar la ruta completa de mi sitio, eso es algo positivo. Según owasp, algunos ataques requieren que el atacante conozca la ruta completa que desea ver. Por lo tanto, no mostrar esa información al atacante es importante.
JediTricks007

Respuestas:

5

Los archivos PHP en el directorio wp-includes no deberían ser accesibles desde el exterior, solo deberían incluirse mediante el código de WordPress. Por lo tanto, una solución fácil para esto es usar reglas .htaccess para bloquear el acceso a los archivos * .php que se encuentran en el directorio wp-includes

Mark Kaplun
fuente
1
¿Puedes dar un ejemplo de tal .htaccess?
Lucas Bustamante
0

Display_errors debe deshabilitarse en un sitio web de producción.

WP Scan accede wp-includes/rss-functions.phpdirectamente, y este es su código fuente, a 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' );

Cuando se accede directamente, la _deprecated_file()función no existe, por lo que arroja un error fatal.

La solución es deshabilitar display_errorsa nivel de servidor. Si su PHP se ejecuta bajo mod_apache, puede hacerlo agregando esta línea a su archivo .htaccess principal:

php_flag display_errors off

Si usa PHP-FPM, probablemente tendrá que reemplazar php.ini en su carpeta local public_html.

Además, WordPress es consciente de eso:

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

Lucas Bustamante
fuente
-1

Teóricamente, lo que voy a decirte es peligroso y probablemente no debería hacerse, si estás haciendo las cosas de la "forma correcta de Wordpress".

Prácticamente , esto funciona para nuestro entorno de producción.

El archivo rss-functions.phpestá en desuso y se redirige a rss.php.

El archivo rss.phpha quedado en desuso desde v3.0.0, y los comentarios internos recomiendan que use SimplePie en su lugar.

Por lo tanto, el archivo rss-functions.phpse puede eliminar de forma segura siempre que no tenga una instalación antigua heredada y si no tiene complementos que dependan de este archivo.

Alternativamente, comente la línea 8 en ese archivo.


Desde el punto de vista de la seguridad, también debe implementar definitivamente la sugerencia de @ MarkKaplun anterior, ya que este archivo no debe ser golpeado directamente por el navegador.


Por cierto, estoy de acuerdo con usted en que divulgar la ruta completa es un riesgo de seguridad; Mantenemos WEBROOT en una ruta personalizada por ese motivo.

haz
fuente
2
para bien y para mal, eliminar o cambiar archivos principales nunca es una solución.
Mark Kaplun