Buscar

Seguridad web

Qué es xmlrpc.php en WordPress y cómo desactivarlo de forma segura

xmlrpc3

El archivo xmlrpc.php permite la conexión remota entre WordPress y aplicaciones de terceros aunque está principalmente presente en el núcleo de WordPress por razones de compatibilidad hacia atrás ya que la API REST maneja muchas de esas conexiones. La vulnerabilidad con este archivo radica en la posibilidad de ser atacado con un ataque de fuerza bruta y ataques DDoS a través de los pingbacks. Determina si este archivo está habilitado revisando tudominio.com/xmlrpc.php y deshabilítalo en caso de que no lo estés usando.

Quizás si alguna vez hemos usado la aplicación de WordPress.com o Jetpack hemos tenido problemas de conexión donde hemos visto el mensaje «No pudimos hacer una solicitud XML-RPC a tu sitio«. Esto solía ocurrir con bastante frecuencia después del lanzamiento de la versión 3.5 de WordPress porque XMLRPC se convirtió en la opción por defecto.

La razón principal detrás de esto fue que la aplicación la cual necesitábamos conectar (y una de las más usadas y la principal razón de este cambio en XMLRPC fue la aplicación de WordPress.com) era externa a nuestro WordPress y necesitaba conectarse con él usando XMLRPC.

  • ¿Es seguro mantener xmlrpc.php activo?
  • Principales riesgos y ataques relacionados con el xmlrpc.php
  • Ataques de fuerza bruta
  • Abuso de PingBanks para DDoS
  • Cómo comprobar si xmlrpc está habilitado
  • Cómo desactivar o proteger xmlrpc.php en WordPress
  • Utilizar un plugin
  • Modificar fichero .htaccess

¿Qué es xmlrpc.php y para qué se usa en WordPress?

Como alguien que usa WordPress, es posible que ya haya encontrado el archivo xmlrpc.php. El problema es que como no se utiliza para escribirse a sí mismo (a diferencia de los archivos wp-config.php o .htaccess) se le pasa por alto.

A pesar de eso, este archivo es muy importante para nuestro sitio web, ya que su propósito principal es la capacidad de conectar nuestra instalación de WordPress con aplicaciones remotas, lo que nos permite por ejemplo publicar contenido, hacer modificaciones o conectar la instalación a servicios externos (por ejemplo Jetpack, uno de los más conocidos).

Es importante tener en cuenta que actualmente el protocolo XMLRPC se utiliza menos, ya que parte de las funciones han pasado a gestionarse actualmente con REST API.

¿Es seguro mantener xmlrpc.php activo?

Como xmlrpc.php no es necesario para algunos propósitos, la primera solución que se podría pensar es su eliminación de WordPress por completo. Pero por ahora todavía se mantiene en el núcleo de WordPress debido a algunos problemas de compatibilidad y algunos propósitos donde todavía es necesario.

El archivo xmlrpc.php no es un riesgo de seguridad en sí mismo pero puede ser usado como un «punto de entrada» para atacar nuestro sistema. Si por alguna razón específica nuestro sistema necesita que este archivo esté habilitado debido a la configuración del web y las funciones que necesitamos usar entonces no necesitamos deshabilitarlo.

Principales riesgos y ataques relacionados con el xmlrpc.php

Ataques de fuerza bruta

El principal problema del uso de xmlrpc.php para este tipo de ataques es la utilización del método ‘system.multicall’, ya que permite enviar varias solicitudes en una única petición HTTP, lo que hace que estos ataques de fuerza bruta tengan mayor magnitud, al poder comprobar miles de contraseñas con 4 o 5 peticiones HTTP y que de esta forma, algunas herramientas de seguridad dependiendo de su configuración, no detecten esto como un intento de acceso por fuerza bruta (ya que es un número de peticiones reducido, pero realizando al mismo tiempo miles de comprobaciones).

Abuso de PingBanks para DDoS

Un «pingback (notificación automática entre blogs)» es un mensaje automático de un blog a otro para informarte que tu blog ha sido enlazado desde otro blog (siempre y cuando ambos blogs estén usando «pingbacks (notificaciones automáticas entre blogs)»).

No se usan con la misma frecuencia que hace unos 8/10 años atrás, por lo que su uso es menos frecuente y por ende también lo es su uso para este tipo de ataque web, y hasta muchos de los sistemas podrían tenerlo deshabilitado.

Sin embargo, podemos deshabilitar la función de «ping» en el sitio web si no es requerido por nosotros. Esto se puede hacer yendo a «Configuración>Comentarios» y desmarcar «Permitir notificaciones de enlaces de otros blogs (pingbacks y trackbacks) en nuevos post» y «Intentar notificar a cualquier blog vinculado desde el post».

Pero los «pingbacks» también usan XMLRPC y esto permite muchos pedidos desde diferentes direcciones IP. Por un lado esto hace difícil bloquear los «pingbacks» y por otro lado este número de pedidos puede sobrecargar el servidor.

En este artículo puedes ver más información sobre los ataques DDoS: https://raiolanetworks.com/blog/ataque-ddos-todo-lo-que-necesitas-saber/

Cómo comprobar si xmlrpc está habilitado

Para verificar si xmlrpc.php se está utilizando en nuestra página, tenemos básicamente dos alternativas.

Si no está activo, la notificación será diferente (generalmente un 403 o un 404):

respuesta a xmlrpc.php no activo

Cómo desactivar o proteger xmlrpc.php en WordPress

Si no utilizamos ninguna función que dependa de xmlrpc.php, podemos deshabilitarlo en nuestra web.

Utilizar un plugin

Esto se puede hacer con la ayuda de un complemento como ‘Deshabilitar API XML-RPC’: https://es.wordpress.org/plugins/disable-xml-rpc-api/, el cual deshabilitará automáticamente xmlrpc cuando se instale.

Esto sería una alternativa extremadamente interesante al usar Jetpack ya que existe la opción de agregar una excepción para Jetpack.

xmlrpc.php opción para añadir una excepción para Jetpack

Si utilizamos Perfmatters por ejemplo, podemos utilizarlo también para desactivar XMLRPC desde el apartado ‘General’.

Es importante que averigüemos si el plugin de seguridad que tenemos instalado permite esta funcionalidad. Esto se puede hacer a través de «Configuración > Avanzada > Configuración de WordPress» si tenemos SolidSecurity (iThemes Security).

deshabilitar xmlrpc.php desde SolidSecurity

Modificar fichero .htaccess

xmlrpc.php también puede ser deshabilitado agregando las siguientes líneas de código en el archivo .htaccess:

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

Esto nos impediría instalar otro plugin ya que ninguno de los que usamos ofrece esta función pero sería bueno recordar que el archivo .htaccess normalmente se puede editar y por lo tanto si en algún momento este código se corrompe XMLRPC volverá a estar funcionando en la web.

Preguntas Frecuentes

¿Para qué sirve exactamente xmlrpc.php si casi nadie lo usa?

Su propósito es vincular aplicaciones externas con WordPress usando llamadas remotas. La aplicación móvil oficial la utiliza para publicar y administrar contenido así como algunas aplicaciones de escritorio. Si usted publica su contenido solamente a través de un navegador entonces es muy probable que no lo necesite. Y aquí está el problema: muchas personas lo tienen activado pero no usan ninguna aplicación.

Si desactivo xmlrpc.php, ¿dejará de funcionar la aplicación móvil de WordPress?

Sí, la aplicación oficial y todas aquellas aplicaciones que se basan en XML-RPC se desconectarán de Internet. Por eso es aconsejable averiguar de antemano si lo que usted usa utiliza XML-RPC o no. Como sería difícil para mí publicar contenido en mi blog desde mi teléfono móvil no lo bloquearía.

¿Cómo sé si mi WordPress está recibiendo ataques a través de xmlrpc.php?

Revise los registros de acceso al servidor y verifique si hay múltiples accesos a xmlrpc.php desde la misma dirección IP. Si hay muchos accesos realizados en un corto periodo de tiempo esto indica que hay ataques de fuerza bruta. También puede considerar revisar los intentos de inicio de sesión fallidos; cuando hay cientos de estos en un día sin utilizar la aplicación móvil entonces algo tiene que hacerse.

¿Te ha resultado útil? Valora este artículo

Sé el primero en valorar este artículo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *