Al igual que cualquier otro gestor de contenidos (CMS), WordPress ha ido evolucionando con el paso de los años hasta convertirse en el rey, sin embargo, aún quedan “residuos” de sus orígenes que valdría más la pena destruir por completo, pero que no se borran nunca, por muchas nuevas versiones de WordPress que se vayan lanzando al mercado.
Muchos desconocen hoy en día por qué no han sido completamente destruidos esos “residuos”, nos referimos a archivos que todavía permanecen en el CMS, pero que ya no aportan gran cosa por haberse quedado sus funcionalidades obsoletas.
Qué es el archivo XMLRPC y cuáles son los riesgos en tu WordPress
Este el curioso caso del archivo xmlrpc.php, muy interesante hace unos años, pero “completamente” inútil en la actualidad. A menos que requiramos de alguna de sus funcionalidades para publicar en remoto o el plugin Jetpack.
¿Qué es XMLRPC?
XMLRPC es un archivo de WordPress que facilita la transmisión de datos con HTTP, utilizado como mecanismo de transporte y XML como componente para la codificación.
Desde sus orígenes, WordPress siempre ha dispuesto de características interesantes que permiten interactuar de forma remota con nuestro website. Por ejemplo, si necesitábamos acceder a la web para llevar a cabo una actualización o algún tipo de consulta, pero no teníamos a mano nuestro PC. Durante un tiempo la solución fue xmlrpc.php, un archivo que aún podemos encontrar junto al resto de ficheros independientes, que forman WordPress.
Para qué sirve XMLRPC Wordpress
Como indicamos anteriormente, es posible que no tengamos acceso a nuestro PC y queramos publicar nuestra web desde un dispositivo móvil.
En este caso, xmlrpc.php permite conectarse al sitio web, a través de Smarthphones, implementando trackbacks y pingbacks de otros sitios, y algunas funciones asociadas con el plugin Jetpack.
Por lo tanto, permite a una aplicación externa conectarse con WordPress, pudiendo utilizar la función de acceso remoto habilitada por xmlrpc.php para llevar a cabo dicha tarea.
En el año 2008 y con WordPress 2.6 en el mercado, existía una forma alternativa de habilitar o deshabilitar XML-RPC. Sin embargo, desde la aparición de la app WordPress para IPhone, la compatibilidad con XML-RPC, venía habilitada predeterminadamente, sin opción alguna para desactivar la configuración, como sigue ocurriendo hoy en día con la versión 5.x de WordPress.
También es cierto que, aunque siga configurado, la funcionalidad de este archivo ha disminuido mucho, su tamaño general ha variado de 83 kb a 3 kb, por lo que ya no tiene un papel tan importante como antaño. Ahora todas las funcionalidades se controlan mediante la API REST de WordPress.
Cuáles son los riesgos de .xmlrpc
El caso es que, durante los últimos años, y más en pleno 2022, XMLRPC se ha convertido más en un problema que en otra cosa, sobre todo debido a sus riesgos, que permiten el “pirateo” de nuestro WordPress o ataques severos de fuerza bruta, con los que intentar tomar el control de la web, a través de nuestro usuario y contraseña, por parte de los piratas informáticos. Y todo ello, únicamente a través del archivo XMLRPC.
Mantener el archivo XMLRPC, junto al resto de archivos de WordPress, tiene principalmente los riesgos de seguridad que hemos mencionado:
Ataques de Fuerza Bruta
El archivo XMLRPC suele recibir constantes ataques de fuerza bruta, por parte de piratas informáticos, que quieren obtener los datos de acceso de nuestro WordPress (usuario y contraseña para el acceso al Escritorio).
Un pirata informático intentará por todos los medios acceder a nuestro sitio web, usando xmlrpc.php, mediante un script propio que le permita insertar múltiples combinaciones de nombre de usuario y contraseñas diferentes, sin parar.
De hecho, un ataque de fuerza bruta consiste, precisamente, en probar diferentes combinaciones de usuario y contraseña mediante un solo comando en WordPress.
Aprovecharse de las vulnerabilidades del archivo xmlrpc.php les permite a los piratas informáticos evadir las seguridades que suelen detectar y, bloquear los ataques de fuerza bruta más comunes para WordPress. Sabiendo esto, es muy mala idea tener el archivo operativo.
Ataque DDoS
También, pueden usar la función pingback en WordPress a través de xmlrpc.php, para enviar pingbacks a miles de sitios instantáneamente (si enviaran pocos pingbacks no pasaría nada, pero si envían cientos o miles de ellos, podrían crear problemas).
Con ello, provocarían múltiples peticiones al servidor, desde un amplio abanico de direcciones IP (prácticamente infinito), con las que intentar la interrupción y desconexión completa del sitio web, así como la sobrecarga del servidor. A esto se le conoce como Ataque DDoS, por lo tanto, xmlrpc.php hace posible recibir un ataque DDoS.
Una vez más, es una mala idea tener este archivo operativo, pero por suerte podemos deshabilitarlo.
Cómo Deshabilitar XMLRPC en WordPress
Opción 1 – Código Deny en archivo .htaccess de WordPress
Aunque parezca mentira, es posible deshabilitar el archivo XMLRCP tan solo añadiendo un código en el archivo .htaccess de WordPress (el cual se encuentra en la carpeta de la propia instalación de WordPress y que puede estar oculto):
Si quisiéramos darle acceso a una IP al archivo podríamos añadir la siguiente línea:
allow from xxx.xxx.xxx.xxx (sustituyendo las xxx.xxx.xxx.xxx por la IP correspondiente)
Con la autorización a una IP el código quedaría así, aunque en principio no se nos ocurre para permitir el acceso, si lo que queremos es todo lo contrario, pero aquí lo dejamos por si le pudiera venir bien a alguien:
(<)Files xmlrpc.php(>)
Order Deny, Allow
Deny from all
allow from xxx.xxx.xxx.xxx
(<)/Files(>)
* El código va escrito sin paréntesis
Opción 2 – Protection Against DDoS -WordPress Plugin
Si no queremos complicarnos mucho, tal vez esta segunda opción sea la ideal.
Gracias a Protection Against DDoS -WordPress Plugin, deshabilitar XML-RPC en nuestro sitio de WordPress resulta una tarea muy sencilla, sobre todo porque podemos instalar el plugin desde la propia sección de Plugins de WordPress y, a base clics, marcar sus opciones de denegación.
Una vez instalado el plugin, a través de su página de configuración, vía menú principal de WordPress -> Ajustes -> DDoS Protection, marcamos todos los casilleros con las opciones:
Denegar el acceso desde fuera al archivo xmlrpc.php
Denegar el acceso desde fuera a todos los feeds
Denegar el acceso desde fuera al archivo autodiscover/autodiscover.xml
Denegar el acceso desde fuera al archivo wpad.dat
Por último, clic en Guardar cambios y listo.
Por cierto, el plugin también da la posibilidad de admitir o no un país (Allow y Deny) y a qué URL redireccionarlo.
Conclusión
Lo cierto es que hay poco que debatir, tan solo debemos revisar si tenemos el archivo xmlrpc.php en la raíz de la instalación de WordPress y desactivarlo, ya que es más un posible problema que otra cosa, sobre todo debido a sus altos riesgos (permite ataques de fuerza bruta y DDoS).
Si queremos mantener la estabilidad y seguridad del website, podemos empezar por deshabilitar xmlrpc.php por completo.
A menos que necesitemos algunas de las funciones necesarias para la publicación remota o el Plugin Jetpack.