Una guía definitiva sobre XMLRPC para WordPress (+ Cómo deshabilitarlo)
Publicado: 2021-04-08La seguridad del sitio web es algo difícil de resolver de la manera correcta . Específicamente con problemas de seguridad relacionados con XML-RPC, como se explota comúnmente en ataques a sitios de WordPress. Hay mucha información disponible en Internet que proporciona todo tipo de soluciones, pero ¿cuáles son las correctas? Este artículo explicará el cómo, las soluciones disponibles y cuál es realmente la mejor solución. ¡Vamos a sumergirnos!
XMLRPC es más antiguo que el propio WordPress. Este sistema se introdujo en WordPress para combatir el dilema de la conexión lenta a Internet al ayudar a los usuarios a escribir nuevas publicaciones sin conexión y luego subirlas al servidor. La capacidad de conectar WordPress de forma remota con otras aplicaciones solo era posible con el archivo xmlrpc.php.
Incluso algunos desarrolladores experimentados no entienden completamente XMLRPC y las amenazas de seguridad asociadas con él. Es muy probable que el sitio o los sitios que administra tengan un archivo XMLRPC activo que requiera su atención inmediata, pero solo puede ejecutar un plan de acción efectivo después de saber cómo funciona XMLRPC y cuál es la mejor manera de manejarlo de manera segura.
Aunque WordPress ahora tiene su propia API REST, el archivo xmlrpc.php todavía está presente dentro del núcleo y está habilitado de forma predeterminada, lo que expone el sitio de WordPress a varios ataques cibernéticos. En este artículo, aprenderemos el uso de este archivo, las vulnerabilidades asociadas con él y cómo manejar esto sin poner en riesgo la seguridad de su sitio.
Tabla de contenido
- ¿Qué es un archivo xmlrpc.php?
- ¿Qué tan viciosos pueden ser los piratas informáticos con el archivo xmlrpc.php?
- Ataque de fuerza bruta
- Ataque DDoS
- Ataque de puerto entre sitios (XSPA)
- Métodos ineficaces para bloquear ataques XMLRPC
- Al deshabilitar XMLRPC por completo
- Por qué la instalación de un complemento de seguridad realmente daña su sitio
- ¿Cómo maneja Accelerated Domains los problemas de XMLRPC para sus clientes?
- Pensamientos finales
¿Qué es un archivo xmlrpc.php?
En su forma más simple, XML-RPC (llamada a procedimiento remoto) se creó para la comunicación entre plataformas. Este protocolo solía realizar llamadas a procedimientos utilizando HTTP como transporte y XML como codificador. El cliente realiza estas llamadas enviando una solicitud HTTP al servidor y recibe la respuesta HTTP a cambio. XML-RPC invoca funciones a través de una solicitud HTTP y luego estas funciones realizan algunas acciones y envían respuestas codificadas a cambio.
Comparemos esto con una llamada API REST para comprender completamente el concepto.
Procedimiento | RPC | DESCANSAR |
Inscribirse | POST/registro | POST/usuarios |
Leer usuario | GET/leerUsuario?userid=123 | GET/personas/1234 |
REST consume parámetros de URL para identificar recursos, mientras que RPC usa los parámetros de consulta para proporcionar argumentos de función.
WordPress usó XMLRPC para permitir a sus usuarios interactuar con su sitio de forma remota. Todavía lo usa para potenciar su aplicación móvil y para admitir complementos como JetPack, WooCommerce, etc. Usar el archivo xmlrpc.php
tiene sus desventajas, pero ¿deshabilitarlo por completo es la única solución viable? Para responder a eso, primero debemos analizar las vulnerabilidades asociadas con él y cuáles son las soluciones disponibles para evitarlas.
¿Qué tan viciosos pueden ser los piratas informáticos con el archivo xmlrpc.php?
Con XMLRPC, los piratas informáticos aprovechan las llamadas a procedimientos remotos (RPC) e invocan funciones para obtener los datos que desean. En la mayoría de los sitios de WordPress, el archivo xmlrpc.php
es fácilmente rastreable, y con solo enviar datos XML arbitrarios, los piratas informáticos controlan el sitio para ejecutar el código que han preparado para ejecutar un determinado tipo de ataque.
Para comprender cómo se ve comprometido WordPress XMLRPC, veamos los ataques cibernéticos más populares asociados con él.
Ataque de fuerza bruta
En el ataque de fuerza bruta, el hacker intenta adivinar el nombre de usuario y la contraseña correctos ejecutando numerosos intentos de inicio de sesión. Desafortunadamente, una gran cantidad de sitios de WordPress usan contraseñas de administrador débiles o no tienen ninguna capa de seguridad agregada para detener a los atacantes. Esos sitios se ven fácilmente comprometidos con este tipo de ataque.
Otros usan una contraseña segura y también tienen mecanismos de seguridad como reCaptcha y bloqueo automático de IP que es efectivo contra ataques de fuerza bruta, pero si el hacker decide usar XMLRPC; ni siquiera necesita acceder al administrador de WordPress.
Una herramienta muy común de Kali Linux, WPSCAN, se utiliza para enumerar todos los nombres de usuario y, una vez hecho esto, los piratas informáticos fuerzan la contraseña utilizando el archivo xmlrpc.php
enviando la siguiente solicitud HTTP al sitio de la víctima.
POST /xmlrpc.php HTTP/1.1
User-Agent: Fiddler
Host: www.example.com
Content-Length: 164
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>pass</value></param>
</params>
</methodCall>
En el ejemplo anterior, un hacker puede enviar miles de variaciones hasta que recupere la contraseña correcta.
La siguiente respuesta se devuelve contra la solicitud anterior. La respuesta contiene el código de error y un mensaje claro que indica que el nombre de usuario y la contraseña probados eran incorrectos. Es una indicación clara que le dice al pirata informático que intente nuevamente hasta que coincida con la contraseña correcta.
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 26 May 2019 13:30:17 GMT
Content-Type: text/xml; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.1.21
Cache-Control: private, must-revalidate
Expires: Sun, 02 Jun 2019 13:30:17 GMT
Content-Length: 403
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>403</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Incorrect username or password.</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
La respuesta devolvió el código HTTP 200 y el mensaje de que el nombre de usuario y la contraseña proporcionados eran incorrectos. Al pasar por el canal XMLRPC, un pirata informático no tiene que preocuparse por los complementos de reCaptchas o limitar los intentos de inicio de sesión. Puede seguir ejecutando las variaciones hasta que se recupere la contraseña correcta.
Nota: Los ataques de fuerza bruta consumen muchos recursos y también causan problemas de rendimiento. El proceso de prueba y error se ejecuta en un bucle durante un período de tiempo más largo que puede mantener ocupado su servidor para atender a los visitantes reales. Este consumo de recursos innecesario hace que los servidores consuman más energía.
Ataque DDoS
La denegación de servicio distribuida (DDoS) es uno de los ataques cibernéticos más letales que puede paralizar el servidor al atacarlo con cientos y miles de solicitudes simultáneas. Los piratas informáticos utilizan la función de pingback de WordPress junto con el archivo xmlrpc.php para ejecutar este tipo de ataques.
Idealmente, el pirata informático apunta al punto final o una página que puede ser visitada varias veces y tarda más en responder. De esta manera, un solo golpe puede tener un impacto máximo en los recursos del servidor y, en nuestro caso, XMLRPC sirve bien al hacker para exponer dichos puntos finales.
Varios sitios de WordPress ya comprometidos se utilizan para ejecutar el método pingback.ping para apuntar a una sola víctima. Las abrumadoras solicitudes HTTP GET y POST atascan el tráfico regular y eventualmente bloquean el servidor.
Primero, el hacker verifica si el archivo xmlrpc.php está habilitado o no enviando la siguiente solicitud.
POST /xmlrpc.php HTTP/1.1
Host: withinsecurity.com
Connection: keep-alive
Content-Length: 175
<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>demo.sayHello</methodName>
<params>
<param>
<value>admin</value>
</param>
</params>
</methodCall>
Una vez que se confirma que XMLRPC está habilitado en el sitio web de destino, el atacante comienza a golpearlo utilizando la red de sitios explotados para enviar múltiples solicitudes de pingback al sitio de la víctima. Esto puede automatizarse desde múltiples hosts y usarse para provocar un ataque DDoS masivo en el sitio de la víctima.
POST /xmlrpc.php HTTP/1.1
Host: withinsecurity.com
Connection: keep-alive
Content-Length: 293
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string>http://173.244.58.36/</string></value>
</param>
<param>
<value><string>https://example.com/blog/how-to-make-a-salad</string></value>
</param>
</params>
</methodCall>
Ataque de puerto entre sitios (XSPA)
Los ataques de puertos entre sitios (XSPA) son muy comunes en los que el pirata informático inyecta el script malicioso para recuperar información sobre los puertos TCP y las direcciones IP. En el caso de WordPress, XMLRPC se usa junto con su mecanismo de pingback para evitar cualquier enmascaramiento de IP, como WAF básico como Cloudflare.
En un ataque XSPA, el pirata informático utiliza el método pingback.ping para hacer pingback a una publicación en un sitio web de destino que, a cambio, envía la dirección IP en respuesta. Hacker usa un sniffer para crear el punto final para enviar el pingback y una URL activa de una publicación de blog.
Los piratas informáticos envían la siguiente solicitud desde su servidor.
<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>http://<YOUR SERVER >:<port></string></value>
</param><param><value><string>http://<SOME VALID BLOG FROM THE SITE ></string>
</value></param></params>
</methodCall>
Si la respuesta contiene código de falla y un valor mayor que 0, significa que el puerto está abierto para que comience a enviar los paquetes HTTP directamente.
Métodos ineficaces para bloquear ataques XMLRPC
Hasta ahora en el artículo, hemos establecido que el archivo xmlrpc.php es propenso a algunos ataques cibernéticos graves, como DDoS, Bruteforce y Cross-site Port Attack, por lo tanto, es crucial manejarlo adecuadamente para bloquear estos ataques. .
Eliminando el XMLRPC por completo
Simplemente puede eliminar el archivo XMLRPC que hará que su servidor comience a arrojar errores 404 a cualquiera que intente acceder a él. La desventaja de esta solución es que el archivo se volverá a crear cada vez que actualice WordPress.
Al deshabilitar XMLRPC por completo
La otra opción más viable es deshabilitar el archivo xmlrpc.php
. Puede hacer esto simplemente agregando el bloque de código dentro de su archivo .htaccess
. Asegúrese de hacer esto antes de las reglas .htaccess
que nunca cambian agregadas por WordPress.
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
Esto deshabilitará el archivo xmlrpc.php
para cada aplicación o servicio que lo use. Puede incluir en la lista blanca una determinada dirección IP en caso de que aún desee acceder a su sitio de WordPress a través de XMLRPC. Para eso, necesitas agregar el siguiente comando:
<Files xmlrpc.php>
<RequireAny>
Require ip 1.1.1.2
Require ip 2001:db8::/32
</RequireAny>
</Files>
ventajas
- Elimina los riesgos de abuso de XMLRPC en ciberataques.
- Beneficios de rendimiento a largo plazo y ahorros en los recursos del servidor.
Contras
- Deshabilitar XMLRPC es lo mismo que deshabilitar el acceso remoto para aplicaciones que usan esta versión de acceso remoto. Esto significa que Jetpack, la aplicación móvil WP o cualquier otra solución que se conecte con su sitio de WordPress a través de XMLRPC ya no podrá conectarse con su sitio.
- Es posible que tampoco funcione el código heredado para aplicaciones personalizadas.
Por qué la instalación de un complemento de seguridad realmente daña su sitio
Los usuarios de WordPress a menudo se apoyan en complementos para cualquier característica o funcionalidad requerida sin pensar mucho en su impacto en el rendimiento del sitio. Existen varios complementos de seguridad de WordPress que prometen proteger su sitio web de problemas de seguridad relacionados con XMLRPC, pero en realidad, dañan más su sitio.
Estas son algunas de las razones por las que asegurar su sitio con un complemento no es la mejor opción.
- Los complementos de seguridad solo son efectivos a nivel de la aplicación y no protegen su servidor de ser atacado.
- Agregan código innecesario en su sitio que degrada su rendimiento y aumenta el tiempo hasta el primer byte (TTFB).
- Algunos de estos complementos hacen más daño que bien y los piratas informáticos los utilizan para crear puertas traseras en su sitio web.
- Estos complementos requieren una gestión frecuente que agrega más carga de trabajo.
De la evaluación anterior, ninguna de las opciones ofrece una solución ideal para manejar el problema de seguridad de XMLRPC. Esto nos lleva a Dominios acelerados. Un servicio creado para resolver problemas complejos relacionados con la seguridad y mucho más. Veamos cómo Accelerated Domains puede resolver el problema de XMLRPC de manera eficaz.
¿Cómo maneja Accelerated Domains los problemas de XMLRPC para sus clientes?
Accelerated Domains resuelve problemas complejos de rendimiento, seguridad y escalabilidad de la manera más eficiente. Accelerated Domains ofrece seguridad administrada a nivel empresarial que bloquea cualquier tipo de ciberataque, incluidos los asociados con XMLRPC.
El motor de seguridad inteligente de Accelerated Domains se ubica frente al servidor y filtra cerca del 40 % de todo el tráfico HTTP. Detecta incluso los ataques cibernéticos más sofisticados al principio de la línea de tiempo a través de sus capacidades heurísticas inteligentes impulsadas por la alimentación continua de datos y el conocimiento práctico y el análisis de tráfico de Servebolt. Accelerated Domains hace su magia sin degradar el rendimiento de su sitio de ninguna manera. De hecho, lo acelera.
El motor de seguridad proactivo de Accelerated Domains protege automáticamente su sitio web de los ataques DDoS. Con una capacidad de red cercana a los 60 Tbps, está bien equipado para soportar incluso algunos de los ataques DDoS más grandes en Internet. Del mismo modo, proporciona un mecanismo de defensa eficaz contra los ataques de fuerza bruta a través de una función de limitación de velocidad automática en la que se identifica y limita la cantidad de solicitudes generadas desde una sola fuente para evitar actividades maliciosas.
ventajas
- Accelerated Domains mitiga la mayoría de las vulnerabilidades de seguridad asociadas con XMLRPC, por lo que no es necesario desactivarlo.
- Permite al usuario seguir usando complementos como Jetpack, la aplicación WooCommerce y otras herramientas que dependen del archivo xmlrpc.php.
- Integración sin problemas en cualquier dominio, por lo que no es necesario modificar el archivo
.htaccess
. - No es necesario instalar complementos adicionales.
Contras
- No tiene ninguno.
Pensamientos finales
Los ataques cibernéticos se están volviendo más sofisticados día a día y, como webmaster y propietario de un negocio, es vital que los entiendas y conozcas las herramientas para enfrentarlos. La mayoría de los ataques se evitan con un enfoque proactivo, como el monitoreo constante y la actualización del software, o agregando herramientas como Dominios acelerados que hacen todo eso en piloto automático. Una vez habilitado, Accelerated Domains filtra el tráfico de manera inteligente y toma las medidas necesarias para mantener su servidor de origen y su sitio web protegidos contra ataques cibernéticos.