El endpoint /wp-mail.php es un archivo legítimo pero antiguo del núcleo de WordPress, diseñado para una funcionalidad llamada "Publicar por correo electrónico". Sin embargo, hoy en día se considera obsoleto y su presencia activa puede suponer un riesgo de seguridad.
¿Para qué sirve wp-mail.php?
Es un script que permite publicar entradas en tu blog enviando un correo electrónico a una dirección específica. Fue introducido en las primeras versiones de WordPress (alrededor de la 1.2, en 2004) y estaba pensado para cuando publicar desde el navegador no era tan sencillo.
Su funcionamiento es el siguiente: cuando se ejecuta el archivo (ya sea manualmente o mediante una tarea programada), WordPress se conecta a una cuenta de correo configurada (vía POP3), revisa los mensajes nuevos y, si encuentra alguno, lo convierte en una entrada de blog.
⚠️ ¿Por qué es un problema de seguridad?
Aunque es un archivo oficial, tiene varios problemas que lo convierten en un riesgo potencial:
Funcionalidad obsoleta y vulnerable: Esta característica ya no se recomienda y ha sido origen de vulnerabilidades de seguridad en el pasado. Por ejemplo, versiones antiguas de WordPress (anteriores a la 4.7.1) tenían una vulnerabilidad (CVE-2017-5491) que permitía a atacantes publicar entradas sin autorización. También se han reportado problemas de cross-site scripting (XSS) relacionados con este archivo en versiones afectadas.
Ausencia de controles de acceso modernos: El archivo no tiene ningún sistema de autenticación fuerte. Cualquier persona que conozca la URL de wp-mail.php podría ejecutarla, lo que abre la puerta a ataques como la publicación de spam o la saturación del servidor (denegación de servicio).
Confianza en la seguridad del correo: La función se basa en la configuración de una cuenta de correo y la verificación del remitente, un sistema que puede ser vulnerable a suplantación de identidad (spoofing).
Expone información: Se ha reportado que puede exponer la dirección de correo del remitente en algunos casos.
¿Cómo comprobar si está accesible?
Accede a: https://tu-dominio.com/wp-mail.php
Normalmente el servidor responderá con un mensaje indicando que no hay mensajes que procesar o mostrará una página en blanco. Esto es un comportamiento esperado.
¿Qué deberías hacer?
La recomendación general es deshabilitar o bloquear el acceso a este archivo a menos que tengas una necesidad muy específica de esta funcionalidad antigua y estés dispuesto a asumir los riesgos.
Puedes hacerlo de varias formas:
Bloquear el acceso público desde el servidor:
Desactivar la funcionalidad desde WordPress:
Añadir la siguiente línea al archivo wp-config.php también la desactiva, evitando que se ejecute aunque se acceda a la URL:
(Nota: Esta línea deshabilita el cron de WordPress en general; asegúrate de que no afecte a otras tareas programadas que tengas).
Nginx:
Utilizar un WAF
Un firewall de aplicaciones web puede bloquear solicitudes automatizadas o patrones de ataque dirigidos a archivos del núcleo de WordPress.
Si decides usar esta función (no recomendado):
Asegúrate de que la cuenta de correo que uses sea exclusiva para esto, tenga una contraseña muy segura y que el script se ejecute mediante un cron del servidor en lugar de dejarlo expuesto a ejecuciones públicas.