Acerca de XML-RPC

XML-RPC es un protocolo para llamadas de procedimiento remoto que utiliza XML para el intercambio de datos. En XML-RPC el cliente que quiere hacer una llamada a un método remoto crea los parámetros de entrada en forma de XML y lo envía a través de una solicitud HTTP a un servidor remoto que implementa el protocolo XML-RPC.

Comprender XML-RPC en WordPress

WordPress es una plataforma completa de blogging. Se hace altamente personalizable y fácil de desarrollar el sitio web. Utilizando WordPress XML-RPC puede crear clientes de blogging de WordPress, algún otro software que hace algunas tareas de lote como crear múltiples publicaciones de un archivo, etc. El sistema XML-RPC puede ser ampliado por los plugins de WordPress para modificar su comportamiento. La funcionalidad XML-RPC se activa por defecto desde WP 3.5. XML-RPC se encendió por defecto – especialmente con los dispositivos móviles y aplicaciones de escritorio de terceros que lo utilizan para comunicarse con WordPress.

El problema con XMLRPC es que puede causar la CPU y el agotamiento de la memoria y la base de datos del sitio para alcanzar el máximo número de conexiones abiertas. Esto hará que el sitio vulnerable (y servidor) se desplome por un período de tiempo, afectando así la disponibilidad de su sitio web.

Hay cuatro maneras de que la API de WP XML-RPC podría ser abusada por un atacante:

  • Reunión de información — el atacante puede sondear para puertos específicos en la red interna del objetivo
  • Escaneo de puertos — el atacante puede ser hosts puerto-escan en la red interna
  • DoS attacks —Aparte de la transferencia de datos, xmplrpc.php también es responsable de habilitar los pingbacks y trackbacks. Estas son las notificaciones que recibes cuando un blog o un sitio web de terceros se vincula a tu sitio web. Aunque se ha reemplazado, algunos sitios web todavía utilizan XML-RPC.php para la compatibilidad atrasada. Si usted es uno de ellos, los hackers pueden lanzar ataques DDoS a xmlrpc.php enviando un gran número de pingbacks y poner su sitio fuera de acción o puede decir – hacerlo indisponible para sus usuarios.
  • Tracción de trazado — el atacante puede reconfigurar un router interno en la red
  • Ataques de fuerzas brutas - XML-RPC (llamada de procesamiento de remote XML) permite llamadas remotas codificadas transportadas a través de HTTP que le permite publicar, editar o eliminar de forma remota un archivo o contenido de su sitio web de WordPress. Con cada solicitud, xmplrpc.php envía la información de autenticación. Hace más fácil empujar una gran cantidad de datos a la vez. Pero la capacidad de empujar una gran cantidad de datos en un momento implica que incluso los hackers también pueden colarse en una serie de contraseñas a él. Si un hacker envía suficientes solicitudes de autenticación con una combinación diferente de nombre de usuario y contraseña, podrían conseguirlo correctamente eventualmente, y como resultado, su sitio se pone comprometido.

Compruebe si XML-RPC ya está deshabilitado en su blog

Antes de ir más allá necesitamos hacer un simple cheque validar XML-RPC está habilitado en tu blog. Para probar que intenta acceder al archivo xmlrpc.php en su navegador accediendo a la URL https://domain.com/xmlrpc.php (reemplazar domain.com con su nombre de dominio).

Si está deshabilitado, recibirá un “403 – Mensaje predeterminado”. Si recibe algún otro mensaje, lea más para entender sus opciones de mitigación.

Mitigaciones o soluciones de trabajo basadas en el código

1. Si no está usando la funcionalidad XML-RPC para nada, para proteger contra cualquier vulnerabilidad, agregue a continuación las líneas .htaccess:

# protect xmlrpc
<IfModule mod_alias.c>
RedirectMatch 403 /xmlrpc.php
</IfModule>

2. Para redirigir las solicitudes de xmlrpc.php a una página personalizada, modifique el RedirectMatch como sea:

# protect xmlrpc
Redirect 301 /xmlrpc.php http://example.com/custom-page.php

3. Negar todo el acceso a xmlrpc.php:

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

4. Permitir el acceso a xmlrpc.php para direcciones IP específicas solamente.

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

También puede agregar el siguiente código a su wp config.php después de la línea require once(ABSPATH . ‘wp-settings.php’); si desea deshabilitar XML-RPC para su sitio.

add_filter('xmlrpc_enabled', '__return_false');