El archivo xmlrpc.php es un componente del sistema de gestión de contenidos WordPress que activa el protocolo XML-RPC (Remote Procedure Call).

Su función es permitir que aplicaciones o servicios externos interactúen con un sitio web de WordPress de forma remota mediante solicitudes HTTP.

Antes de que existiera la API REST de WordPress /wp-json/, XML-RPC era el método principal para realizar acciones como:

  1. Publicar entradas desde aplicaciones móviles.
  2. Administrar el sitio desde clientes de escritorio.
  3. Permitir que servicios externos interactúen con WordPress.
  4. Habilitar funciones como los trackbacks y pingbacks.

En la actualidad, la mayoría de estas funciones han sido reemplazadas por la API REST, por lo que muchos sitios ya no necesitan xmlrpc.php.

1. ¿Por qué puede representar un riesgo de seguridad?

Aunque xmlrpc.php no es una vulnerabilidad por sí mismo, suele ser un objetivo frecuente de los atacantes.

Para entender mejor cómo funciona este archivo y por qué genera debate en la seguridad informática, se deben tener en cuenta las funciones originales, los riesgos asociados y cómo gestionar su estado.

1. Ataques de fuerza bruta

Un atacante puede probar miles de combinaciones de usuario y contraseña utilizando el método system.multicall.

En lugar de enviar una solicitud por intento, puede enviar cientos de intentos dentro de una única petición, reduciendo la probabilidad de ser bloqueado por herramientas de seguridad.

2. Ataques DDoS mediante Pingback

El método pingback.ping puede utilizarse para que miles de sitios WordPress envíen solicitudes simultáneamente hacia una víctima.

Esto convierte a los sitios WordPress vulnerables en parte de un ataque de denegación de servicio distribuido (DDoS).

3. Enumeración de usuarios

Dependiendo de la configuración y de los plugins instalados, algunos métodos XML-RPC pueden facilitar la recopilación de información sobre usuarios válidos del sitio, lo que ayuda a preparar ataques de fuerza bruta.

4. Mayor superficie de ataque

Cada servicio accesible desde Internet aumenta la superficie de ataque. Si no utilizas XML-RPC, mantenerlo habilitado solo añade un punto adicional que puede ser explotado.

¿Cómo comprobar si está habilitado?

Puedes acceder a:

https://tudominio.com/xmlrpc.php

Si aparece un mensaje similar a:

XML-RPC server accepts POST requests only.

significa que el archivo está activo.

¿Deberías desactivarlo?

Sí, si:

  1. No utilizas la aplicación móvil de WordPress.
  2. No publicas contenido mediante herramientas externas.
  3. No dependes de Jetpack u otros servicios que lo requieran.
  4. Solo administras el sitio desde el panel web.

En estos casos, deshabilitar xmlrpc.php reduce la superficie de ataque sin afectar el funcionamiento normal del sitio.

No necesariamente, si:

  1. Utilizas la aplicación oficial de WordPress.
  2. Empleas servicios que requieren XML-RPC para sincronización o publicación remota.
  3. Algún plugin depende específicamente de este protocolo.

En estos casos, conviene restringir el acceso o protegerlo con medidas adicionales en lugar de desactivarlo por completo.

¿Cómo desactivarlo?


Método 1: Desactivarlo desde .htaccess (Apache).


Paso 1: Accede al servidor mediante FTP o al Administrador de archivos de tu hosting.

Paso 2: Abre el archivo .htaccess, ubicado en la raíz de WordPress.

Paso 3: Agrega el siguiente código al final del archivo:

<Files xmlrpc.php>
    Require all denied
</Files>

Si tu servidor utiliza una versión antigua de Apache (2.2), utiliza:

<Files xmlrpc.php>
    Order Deny,Allow
    Deny from all
</Files>

Paso 4: Guarda los cambios.

Paso 5: Paso 5: Comprueba que funciona visitando:

https://tudominio.com/xmlrpc.php

Si devuelve un error 403 Forbidden, significa que el acceso ha sido bloqueado correctamente.

Método 2: Desactivarlo en Nginx.


Si tu servidor utiliza Nginx, edita el archivo de configuración del sitio.

Añade este bloque:

location = /xmlrpc.php { deny all; return 403; }

Después recarga la configuración:

sudo systemctl reload nginx

Método 3: Desactivarlo con un plugin.


Es el método más sencillo para quienes no desean modificar archivos.

Algunos plugins que permiten desactivar XML-RPC incluyen:

  1. Wordfence Security
  2. All In One WP Security
  3. Disable XML-RPC
  4. iThemes Security
  5. Solid Security

Generalmente basta con instalar el plugin y activar la opción Disable XML-RPC.


Método 4: Desactivarlo mediante un filtro en WordPress.


Añade el siguiente código al archivo functions.php del tema hijo o a un plugin específico del sitio:

add_filter('xmlrpc_enabled', '__return_false');

Este método deshabilita el servicio XML-RPC desde WordPress.


Método 5: Desactivarlo desde Cloudflare.


Si utilizas Cloudflare:

  1. Inicia sesión en Cloudflare.
  2. Ve a Security → WAF.
  3. Crea una nueva regla.
  4. Configura la condición:

    URI Path equals /xmlrpc.php

    Acción: Block

  5. Guarda la regla.

De esta forma las solicitudes serán bloqueadas antes de llegar al servidor.


Cómo comprobar que está desactivado


Puedes verificarlo con el navegador:

https://tudominio.com/xmlrpc.php

  1. 403 Forbidden → Correctamente bloqueado.
  2. 404 Not Found → También es válido si el archivo no está accesible.
  3. XML-RPC server accepts POST requests only → Sigue habilitado.

Si administras tu propio servidor o tienes acceso al hosting, bloquear xmlrpc.php desde Apache .htaccess o Nginx es la opción más recomendable, ya que impide que las solicitudes lleguen a WordPress, reduciendo el consumo de recursos y la superficie de ataque. Si no tienes acceso a la configuración del servidor, un plugin de seguridad o una regla en Cloudflare son alternativas eficaces.