¿Qué es XMLRPC y cómo esta reliquia amenaza la seguridad de tu web WordPress?

En el directorio raíz de cada sitio de WordPress hay un archivo más antiguo que el propio WordPress: xmlrpc.php, que durante los días b2 se creó para ofrecer a los sitios una forma de comunicarse entre sí y para que otras aplicaciones se comunicasen con el blog.

¿Qué es XMLRPC?

El nombre te dice todo lo que necesitas saber sobre la funcionalidad.

XML: se diseñó para aceptar cargas útiles en XML. JSON es hoy en día un formato mucho más común. XMLRPC es bastante anterior a JSON.

RPC: RPC significa llamada a procedimiento remoto (Remote Procedure Call). Era un estándar por el cual un sistema podía pedir a otro sistema que hiciera algo. Ahora usamos API-REST o Graph API – para hacer lo mismo, pero antes de que existieran, RPC era una de las herramientas disponibles.

¿Cómo funciona XMLRPC?

Para hacer que XMLRPC.php hiciera algo, tenías que enviarle (POST) un mensaje. Si no estás familiarizado con el funcionamiento de los navegadores, esto es básicamente como hacer clic en el botón “Enviar” en un formulario. Eso suele iniciar una solicitud POST.

Si realizas una solicitud POST a tudominio.tld/xmlrpc.php y le entregas una carga útil XML con el formato adecuado, puedes hacer cosas como crear una publicación en tu web.

Una de las cosas para las que XMLRPC se utilizó mucho en su día fueron los “pingbacks”. Esos comentarios que ves en publicaciones que muestran que alguien más lo enlazó desde su blog.

Amenazas potenciales de seguridad del XMLRPC de WordPress

Durante mucho tiempo, XMLRPC fue una herramienta útil. Ahora toda la funcionalidad para la que se usaba XMLRPC se maneja mediante la API REST, ya incorporada. Aunque ya no se use, es una función todavía activa y a aquellos que sienten nostalgia por tales cosas, les causa una sonrisa. Sin embargo los que están preocupados por la seguridad, lo ven y fruncen el ceño.

La presencia de XMLRPC representa varios riesgos de seguridad para sitios WordPress que pueden llegar a convertirse en ataques severos.

  • Ataques de fuerza bruta a través de XMLRPC

El primer tipo de ataque XMLRPC de WordPress es un simple ataque de fuerza bruta. Dado que parte de la carga útil XML que se pasa a WordPress es el nombre de usuario y la contraseña del usuario que desea realizar la acción, es una manera fácil para que los atacantes prueben combinaciones de nombre de usuario y contraseña hasta que encuentren una que funcione. Muchos propietarios de sitios preocupados por la seguridad limitarán la cantidad de intentos de inicio de sesión que un usuario puede realizar antes de bloquearlos, pero no se molestarán en bloquear las solicitudes XMLRPC, lo que dejará una puerta trasera abierta para que los atacantes intenten encontrar una entrada.

Una vez que un atacante encuentra las credenciales que funcionan, puede intentar dañar tu sitio inyectando contenido en la base de datos del mismo. Ya sean publicaciones, páginas o solo comentarios, el resultado final es el mismo: tu sitio ofrece contenido que no aprobaste y que probablemente no deseas. No obstante, en el peor de los casos, podrían ser publicaciones o comentarios inocuos que tengan malware inyectado.

  • Ataques DDoS usando XMLRPC

Otro de los beneficios de XMLRPC fue la habilitación de pingbacks. Los ciberdelincuentes pueden usarlo para bloquear tu servidor emitiendo muchas solicitudes pesadas a la vez.

Un pingback escribe un registro en tu base de datos, y escribir en tu base de datos es una tarea costosa en cuanto a recursos. Si bien un solo pingback no perjudicaría el rendimiento de tu sitio, cientos o incluso miles de ellos a la vez pueden poner de rodillas incluso al servidor más robusto.

Esto se denomina ataque DDos o de denegación de servicio distribuido. Distribuido porque normalmente no es una sola máquina la que realiza todas las solicitudes, normalmente son un gran número de máquinas repartidas por diferentes lugares.

Suscribirse a
más contenido increíble

Suscríbete para recibir nuestra newsletter mensual con contenido útil y ofertas de SiteGround.

¡Gracias!

Por favor, revisa tu correo electrónico para confirmar la suscripción.

Cómo deshabilitar XMLRPC en WordPress

Hay varias formas de deshabilitar XMLRPC. Te recomiendo que lo hagas porque sinceramente, no lo necesitas.

  • A través del archivo de configuración de tu servidor web 

Si estás familiarizado con el bloqueo de solicitudes a través de los archivos de configuración de tu servidor web y tienes acceso a ellos, ésta es una excelente manera de bloquearlo. Para Apache, puedes agregar este código al archivo .htaccess en el directorio raíz de tu sitio.

<Files xmlrpc.php>

order deny,allow

deny from all

</Files>

Eso lo detendrá en seco.

  • A través del archivo functions.php de tu tema

Si no eres de los que te gustan mucho los archivos de configuración de tu servidor web, puedes agregar una sola línea de código al archivo functions.php de tu tema.

add_filter( ‘xmlrpc_enabled’, ‘__return_false’ );

Asegúrate de hacerlo bien, hay 2 guiones bajos antes de la palabra retorno. De nuevo, esto lo desactivará pidiéndole al propio WordPress que no desea aceptar más solicitudes XMLRPC.

  • Instalar un plugin

Finalmente, si no quieres molestarte en agregar código al functions.php de tu tema, puedes deshabilitar XMLRPC en WordPress instalando un plugin. El plugin hace exactamente lo mismo que el consejo anterior. Hay varios plugins buenos que son gratuitos, pero también es posible que ya tengas esta funcionalidad disponible si tienes instalado algún plugin que incluya Firewall de aplicaciones.

Si no es así, permíteme recomendarte mi favorito y el que uso en todos mis sitios para desactivar XMLRPC: plugin SiteGround Security. Incluso si no estás alojado en SiteGround, puedes usar este plugin gratuito para administrar varias tareas de seguridad diferentes. Si solo deseas que desactive XMLRPC, desactiva todas las demás opciones. Ésa es una de las cosas que me gustan de este plugin: todo es opcional.

XMLRPC nos sirvió bien en su día, pero su tiempo ya ha pasado. Es hora de dejar que se retire con gracia. Hasta que los desarrolladores principales de WordPress decidan que es hora de eliminarlo, debes protegerte a ti mismo y a tu sitio desactivándolo.

author avatar
Cal Evans

PHP Evangelist

Una de las personas más admiradas de la comunidad PHP, que ha dedicado más de 16 años a construir la increíble comunidad PHP y asesorar a la próxima generación de desarrolladores. Nos sentimos extremadamente honrados de que él también sea un amigo muy especial de SiteGround.

WordPress

Iniciar discusión

¿Listo para iniciar tu web?

¡Elige un plan de hosting, crea o migra tu web en unos clics y haz crecer tu presencia online!

Primeros pasos Chatea con un experto