WordPress Xmlrpc.php en Profundidad ¿Obsoleto? ¿Debería Deshabilitarse?

Categorias: Wordpress

Bueno, bueno, viendo que ha gustado el artículo que hicimos sobre uno de los archivos más importantes de WordPress -> wp-config.php.

En el día de hoy, nos sumergiremos en lo que es realmente el archivo xmlrpc.php y porqué se creó. También revisaremos los problemas de seguridad más comunes que causa y cómo “parchearlos” desde el propio WordPress.

Xmlrpc Todos Ficheros WordPress

Y es que WordPress siempre ha tenido características de serie que permiten interactuar de forma remota con nuestro siti o web. A veces necesitamos acceder a nuestro website para actualizarlo o realizar algún tipo de consulta, pero no disponemos de nuestro ordenador. Durante mucho tiempo, la solución fue un archivo llamado xmlrpc.php que podemos encontrar junto al resto de ficheros independientes que componen WordPress (imagen de la parte superior). Pero en los últimos años, y más en pleno 2021, este archivo se ha convertido más en un problema que en una solución.

A continuación…

¿Qué es Xmlrpc.php?

Xmlrpc Qué es

XML-RPC es una característica de WordPress que permite la transmisión de datos, con HTTP actuando como mecanismo de transporte y XML como mecanismo de codificación. Dado que WordPress no es un sistema autónomo y ocasionalmente necesita comunicarse con otros sistemas, esto se buscó para manejar esa tarea.

Por ejemplo, supongamos que deseamos publicar en nuestro sitio desde nuestro dispositivo móvil ya que nuestro ordenador no esta cerca. Podemos usar la función de acceso remoto habilitada por xmlrpc.php para hacer precisamente eso.

Las características principales que xmlrpc.php habilitó permitían conectarse al sitio web a través de Smarthphones, implementando trackbacks y pingbacks de otros sitios, y algunas funciones asociadas con el complemento Jetpack. Digamos que permitía que una aplicación externa se pudiera comunicar con WordPress.

¿Por qué se creó Xmlrpc.php?

Xmlrpc Porque se creó

La implementación de XML-RPC se remonta a los primeros días de WordPress antes de que se convirtiera incluso en WordPress.

En los primeros días de Internet, cuando las conexiones eran increíblemente lentas, el proceso de redacción y publicación en la web era mucho más difícil y requería de más tiempo. En lugar de escribir dentro del propio navegador, la mayoría de las personas escribían sin conexión, luego copiaban y pegaban el contenido en su web. Aún así, este proceso estaba lejos de ser ideal.

La solución (en ese momento) fue crear un cliente de blogs offline (fuera de línea), donde poder conectarse para crear el contenido y después acceder a la web para poder publicarlo. Esta conexión se realizó mediante XML-RPC. Con el marco básico de XML-RPC en su lugar, las primeras aplicaciones usaban esta misma conexión para permitir a las personas iniciar sesión en sus sitios de WordPress desde otros dispositivos.

XML-RPC ¿Obsoleto?

Xmlrpc Obsoleto

En 2008, con la versión 2.6 de WordPress, había una opción para habilitar o deshabilitar XML-RPC. Sin embargo, con el lanzamiento de la aplicación WordPress para iPhone, la compatibilidad con XML-RPC estaba habilitada de forma predeterminada y no había ninguna opción para desactivar la configuración. Esto se ha mantenido fiel hasta hoy en día con la versión 5.x.

Sin embargo, la funcionalidad de este archivo ha disminuido considerablemente con el tiempo, y el tamaño general del archivo ha disminuido de 83 kb a 3 kb, por lo que ya no juega un papel tan importante como solía hacerlo.

XML-RPC ¿Futuro?

Xmlrpc Futuro

Con la nueva API de WordPress, se puede esperar que XML-RPC se elimine por completo. Hoy en día, esta nueva API aún se encuentra en la fase de prueba y solo se puede habilitar mediante el uso de un plugin.

Sin embargo, se puede esperar que la API se codifique directamente en el núcleo de WordPress en el futuro, lo que eliminará por completo la necesidad del archivo xmlrpc.php.

La nueva API no es perfecta, pero proporciona una solución más sólida y segura al problema que aborda xmlrpc.php.

¿Por qué debería deshabilitarse Xmlrpc.php?

Xmlrpc Deshabilitación

Los mayores problemas con XML-RPC corren entorno a la seguridad del sitio web. Los problemas no son directamente con XML-RPC, sino cómo puede utilizarse el archivo para habilitar un ataque de fuerza bruta contra nuestro sitio web.

Claro, podemos protegernos con contraseñas sólidas y plugins de seguridad de WordPress. Pero, el mejor modo de protección es simplemente des habilitar XML-RPC. Algo muy sencillo y en lo que no suele caer la mayoría de personas.

XML-RPC tiene dos vulnerabilidades principales que se han convertido en todo un problema con el paso del tiempo.

1) La primera es que el archivo suele recibir constantes ataques de fuerza bruta por parte de hackers y bots que quieren conseguir los datos de acceso de nuestro WordPress (al panel de administración). Un atacante intentará acceder a nuestro sitio web usando xmlrpc.php mediante el ingreso de varias combinaciones de nombre de usuario y contraseñas diferentes. Se pueden usar de manera efectiva un solo comando para probar cientos de contraseñas diferentes. Esto les permite eludir las herramientas de seguridad que normalmente detectan y bloquean los ataques de fuerza bruta.

2) La segunda es que desconecta los sitios mediante un ataque DDoS. Los piratas informáticos usan la función pingback en WordPress para enviar pingbacks a miles de sitios instantáneamente. Esta función en xmlrpc.php ofrece a los piratas informáticos un suministro casi infinito de direcciones IP para distribuir un ataque DDoS.

Para comprobar si XML-RPC se está ejecutando en nuestro sitio, podemos ejecutarlo a través de una herramienta llamada XML-RPC Validator.

Xmlrpc Validation Service

– Si recibimos un mensaje de error, significa que NO tenemos habilitado XML-RPC.
– Si recibimos un mensaje de de éxito, podemos deshabilitar xmlrpc.php con uno de estos dos métodos:

Método 1 – Código en archivo .htaccess de WordPress

Es posible anular/bloquear el archivo XMLRCP con sólo añadir un código en el archivo .htaccess de WordPress:

Order Allow,Deny
Deny from all
allow from xxx.xxx.xxx.xxx

Xmlrpc Htaccess Código

Nota 1: AQUÍ explicamos donde localizar el archivo .htaccess. Recordemos que puede estar oculto.
Nota2: Se puede cambiar xxx.xxx.xxx.xxx por la IP a la que que si queramos darle acceso.


Método 2 – Plugin Sencillo:
Protection Against DDoS -WordPress Plugin-

Con un plugin sencillo como Protection Against DDoS -WordPress Plugin- deshabilitar XML-RPC en nuestro sitio de WordPress no podría ser más fácil.

Simplemente tenemos que dirigimos hasta la sección de plugins de WordPress y seguir estos pasos:

1) Click en Plugins -> Añadir nuevo
2) En “Palabra clave” teclear lo siguiente: “Protection Against DDoS”
3) Pulsar en Instalar ahora
4) Por último, click en Activar

Después, vamos a la página de configuración dentro del menú principal de WordPress -> Ajustes -> DDoS Protection, y marcamos allí la opción: “Deny access from outside to Xmlrpc.php”. Click en “Save Changes” y finiquitado. 😉

Conclusiones Finales

En general, XML-RPC fue una solución sólida para algunos de los problemas que ocurrieron debido a la publicación remota en WordPress. Sin embargo, con esta característica aparecieron algunos agujeros de seguridad que terminaron siendo bastante perjudiciales para algunos propietarios de WordPress.

Para garantizar que nuestra web permanezca segura, es una buena idea deshabilitar xmlrpc.php por completo. A menos que necesitemos algunas de las funciones necesarias para la publicación remota y el complemento Jetpack.

Hosting WordPress SSD con LiteSpeed

Ahora, en Hostinet puedes contratar un Hosting WordPress SSD con LiteSpeed para incrementar el rendimiento de tu web hasta en un 300%. ¡Te garantizamos una IP española, así como el mejor soporte en tu idioma! 

En Hostinet trabajamos desde hace más de 15 años con servidores ubicados en España (Madrid y Bilbao) para ofrecer a nuestros clientes las mejores prestaciones posibles para sus proyectos web.

Hosting WordPress