Pregunta sobre Wordfence Security de Wordpress:

phpinfo () se muestra después de iniciar sesión

Un usuario preguntó 👇

Uso de Wordfence ver 7.1.15 En una instalación, phpinfo () se muestra inmediatamente después de que un usuario haya iniciado sesión correctamente. No quiero que eso suceda en absoluto. He identificado el código responsable en plugins / wordfence / lib / menu_tools_diagnostic.php:

	<?php if (!empty($inEmail)): ?>
		<?php phpinfo(); ?>
	<?php endif ?>

No estoy seguro de por qué existe ese código y cómo está configurado $ inEmail, pero no voy a saber cómo detener este comportamiento.

(@wfdave)

Hace 2 años, 1 mes

Hola @ josiah-s-carberry,

¿Puedes intentar comentar estas líneas de código y ver si todavía se muestra phpinfo ()?

Por ejemplo:

<?php // if (!empty($inEmail)): ?>
    <?php // phpinfo(); ?>
<?php // endif ?>

Otros usuarios pueden mostrar phpinfo () en otros lugares.

Dave

Esta respuesta fue modificada hace 2 años, hace un mes por. Esta respuesta fue modificada hace 2 años, hace un mes por.

(@ josiah-s-carberry)

Hace 2 años, 1 mes

Ya he hecho eso. No hay duda de que este es el código que muestra phpinfo.

(@wfdave)

Hace 2 años, 1 mes

Eso es muy extraño.

La página menu_tools_diagnostic solo debe mostrarse cuando un administrador está visitando la subpágina de diagnóstico en WordFence.

¿Puede tomar una foto de cómo se ve cuando un usuario inicia sesión correctamente?

¿Es solo el phpinfo () que muestra o muestra más diagnósticos? Si se incluye otro archivo menu_tools_diagnostic.php entonces eso podría explicar por qué los usuarios ven phpinfo ().

(@ josiah-s-carberry)

Hace 2 años, 1 mes

Encontré la fuente del problema. Agregué un filtro para eliminar la información de la versión de los scripts, de la siguiente manera:


function _remove_script_version( $src ){ 
$parts = explode( '?', $src ); 	
return $parts[0]; 
} 
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );

Aparentemente, Wordfence hace algo para verificar alguna versión de un script durante el inicio de sesión y termina en este lugar de manera completamente inesperada, mostrando phpinfo ().

La razón para eliminar los parámetros de la versión es reducir la cantidad de datos no utilizados que el servidor envía a través de la red. Por desgracia, Wordfence lo usa, parece. Sería muy bueno si Wordfence pudiera explicar por qué necesita conocer las versiones de los scripts.

(@wfdave)

Hace 2 años, 1 mes

Wordfence no necesita conocer la versión del script, pero muestra esta información de forma predeterminada.

https://www.wordfence.com/help/dashboard/options/#hide-wp-version

Puede optar por ocultar la versión marcando la casilla de verificación en Todas las opciones -> Ocultar versión de WordPress.

Si navega a plugins/wordfence/lib/wordfenceClass.php en la línea 1116, verá que hacemos algo similar a lo que escribió:

if(wfConfig::get('other_hideWPVersion')){
    add_filter('style_loader_src', 'wordfence::replaceVersion');
    add_filter('script_loader_src', 'wordfence::replaceVersion');
    add_action('upgrader_process_complete', 'wordfence::hideReadme');
}

(@ josiah-s-carberry)

Hace 2 años, 1 mes

Sin embargo, el problema real es que la variable $ inEmail no está inesperadamente vacía, o que hay una lógica defectuosa para mostrar phpinfo () cuando no está vacía.

(@wfdave)

Hace 2 años, 1 mes

Parece $inEmail conjunto inesperado.

Cuando $inEmail cierto, eso significa que el usuario ha solicitado enviar un diagnóstico a su correo electrónico. plugins/wordfence/lib/wordfenceClass.php:3004

Cuando $inEmail falso, eso significa que el usuario está buscando diagnósticos dentro de WordFence. /wp-admin/admin.php?page=WordfenceTools&subpage=diagnostics

En ambos casos, menu_tools_diagnostic.php solo se proporciona cuando el usuario está en la subpágina dentro de WordFence, no después de iniciar sesión.

¿Puedo preguntarle si ha agregado algún código adicional a su sitio de WordPress?

¡Gracias!

(@ josiah-s-carberry)

Hace 2 años, 1 mes

El único lugar donde se necesita menu_tools_diagnostic.php es en wp-content / plugins / wordfence / lib / wordfenceClass.php

He agregado varios filtros y acciones a las funciones .php, incluido el filtro ya mencionado que de alguna manera está relacionado con la ejecución de phpinfo (). Los filtros y otras acciones son muy específicos para varios otros plugins en uso, como personalizar WooCommerce, Yoast, EME, Contact 7, interfaz de Mailchimp, etc., así como personalizar el pie de página en la mayoría de las páginas.

Inmediatamente después de un inicio de sesión exitoso con CUALQUIER cuenta (no solo una función administrativa), la pantalla muestra la salida phpinof (). No se muestra nada más junto con esa salida.

(@wfdave)

Hace 2 años, 1 mes

He profundizado más en el tema y creo que puede causar otro cambio de secuencia de comandos o solución $_GET variables.

Tenga en cuenta si se solicita una página ?subpage=diagnostics o dentro de un guion si $_GET['subpage'] = 'diagnostics', tal vez por eso aparece phpinfo () al iniciar sesión.

Uno de los filtros / acciones puede estar en conflicto con WordFence, lo que hace que WordFence muestre diagnósticos sin estar en la página de diagnósticos.

¿Puedes probar todos los demás plugins que tienes para ver si el problema persiste?

(@ josiah-s-carberry)

Hace 2 años

Probé muchas cosas en la última semana: 1) Dado que el problema estaba en mi sitio de prueba, recreé un nuevo sitio de prueba desde mi sitio de producción, donde no tuve este problema. Por supuesto, el problema desapareció en mi nuevo sitio de prueba. 2) Y luego, sin cambiar ningún filtro, plugin o tema, el problema volvió a surgir repentinamente en mi sitio de prueba. 3) Revisé mis registros de acceso web durante el período anterior a que el problema volviera a ocurrir, pero no encontré ningún comportamiento que pudiera haberlo causado. 4) Cambié mi contraseña de ftp, en caso de que alguien atacara mi sitio a través de ese vector. Dicho esto, Wordfence NO informa ningún archivo que no sea compatible con las versiones oficiales. 5) Incluso intenté deshabilitar todos los plugins y luego volver a habilitarlos uno por uno, pero luego no pude reproducir el problema.

Así que supongo que el problema está relacionado de alguna manera con el cambio de datos, en la base de datos o en las cookies del navegador. Pero no puedo imaginar lo que eso podría significar. Estoy perplejo y no tengo idea de cómo proceder.

(@wfdave)

Hace 2 años

Hola @ josiah-s-carberry,

Perdón por la respuesta larga. Lo único que puedo pensar es si el host en el que está ejecutando el sitio web está enviando información de depuración.

¿Puedo pedirle que revise su php.ini? Específicamente si hay algo dentro de él. auto_prepend_file ( http://php.net/manual/en/ini.core.php#ini.auto-prepend-file )

Este campo le dice a PHP que cada vez que ejecuta cualquier archivo PHP, ejecuta este archivo primero. (Lo que supongo es lo que hace que phpinfo se muestre)

(@ josiah-s-carberry)

Hace 2 años

Es un verdadero raspador de cabezas.

Revisé auto_prepend_file, que, por supuesto, solo contiene los comandos que provienen de Wordfence. También revisé el llamado archivo bootstrap.php y no encontré nada de todo tipo. En cualquier caso, Wordfence en sí no informa ningún problema en ese archivo.

Corrígeme si me equivoco, pero el archivo auto_prepend_file se ejecutaría antes de que alguien inicie sesión, así que si hubiera un problema, uno podría esperar verlo en cada sesión, ¿no?

Tengo dos datos finales que pueden ser relevantes:

1) El phpinfo que veo NO tiene el mismo encabezado que el phpinfo que se muestra cuando se llama manualmente dentro de Wordfence. Solo veo phpinfo simple de vainilla.

2) Por algún milagro, la pantalla phpinfo va y viene. Hace 2 días era visible cada vez que iniciaba sesión. Ayer no dejó de asistir. Hoy, no es visible. Entonces, ¿qué cambia? Todo lo que tengo que hacer son las cookies que caducan y dañan las publicaciones que se ejecutan. Pero no puedo establecer la conexión entre ellos y lo que estoy viendo.

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *