Oferta SiteGround Black Friday

Cómo proteger WordPress de Ataques de amplificación de fuerza bruta

Desde hace tiempo el archivo de WordPress xmlrpc.php es el objetivo de un tipo de ataque muy específico, anteriormente conocido como vulnerabilidad pingback de XML-RPC y actualmente conocido como Brute Force Amplification Attack o Ataque de amplificación de fuerza bruta.

En esta entrada explicaré todo lo que necesitas saber para proteger tu sitio WordPress de este exploit malicioso, así como de otras amenazas similares.

¿Qué es XML-RPC?

Antes de ponernos manos a la obra protegiendo el archivo xmlrpc.php, es importante saber qué hace, por qué está en toda instalación de WordPress, y una explicación bastante exacta es la siguiente:

[XML-RPC es] una especificación y serie de implementaciones que permiten que el software de diversos sistemas operativos se ejecute en entornos diferentes para realizar llamadas de procesos en internet. Es un procedimiento remoto que realiza llamadas usando HTTP como transporte y XML como codificador. XML-RPC se diseño para seer lo más simple posible, al tiempo de permitir que se transmitan, procesen y devuelvan estructuras de datos completos.

wordpress-xmlrpc-brute-force-amplification
Anatomía de un ataque xml-rpc

Dicho más sencillo, básicamente XML-RPC permite a las plataformas de internet interactuar unas con otras. En concreto, el archivo de WordPress xmlrpc.php permite que diversas aplicaciones externas se conecten, transmitan y procesen datos.

¿Necesito XML-RPC?

Ya que preguntas te diré que NO, en realidad no necesitas el archivo xmlrpc.php. Ahora bien, hay varios plugins que utilizan la funcionalidad XML-RPC de WordPress para realizar operaciones remotas, así que, ante la duda, pregunta al desarrollador de cada plugin si necesita usarlo.

Por ejemplo, Jetpack utiliza XML-RPC para conectar varios de sus componentes con WordPress.com, y la misma aplicación WordPress para iPhone o Android no se conectará con tus sitios si no tienes XML-RPC activo.

Pero salvo que uses Jetpack o algún otro plugin muy específico, la mayoría de los sitios WordPress no necesitan el archivo xmlrpc.php para nada.

En consecuencia, si no necesitas el archivo es perfectamente factible que lo borres, bloquees o desactives, sobre todo para evitarte la multitud de ataques que usan este archivo.

Protección con plugins

Si buscas una solución rápida en el directorio oficial de plugins hay varios que te ofrecen desactivar XML-RPC, elige el que más confianza te merezca, o prueba varios hasta dar con el que se ajuste a tus necesidades.

Protección mediante .htaccess

Si le has perdido el miedo al archivo .htaccess hay varias maneras de bloquear el archivo xmlrpc.php. Aquí tienes unas cuantas:

Bloquear xmlrpc.php mediante RedirectMatch

# protect xmlrpc
<IfModule mod_alias.c>
	RedirectMatch 403 (?i)/xmlrpc.php
</IfModule>

Lo mejor de esta técnica es que no importa donde tengas instalado WordPress, el archivo xmlrpc.php quedará protegido independientemente de su ubicación en la estructura de directorios (p.ej.,/wp/xmlrpc.php, /wordpress/xmlrpc.php, /loquesea/xmlrpc.php, etc.). También distingue mayúsculas de minúsculas, así que estarás protegido ante cualquier variación de ataque «todo mayúsculas» (all-cap).

Bloquear xmlrpc.php mediante Order/Deny

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

Cualquiera de estos códigos funcionan perfectamente para proteger el archivo xmlrpc.php bloqueando cualquier intento de acceso al mismo, pero este método es especialmente chulo antes ataques contra XML-RPC. Es simple, exhaustivo, fiable y sin mantenimiento.

Hay otros modos de protegerte mediante .htaccess, y te invito a probarlas, aquí las tienes.

Protección mediante wp-config.php

También puedes protegerte de ataques a XML-RPC desactivando el protocolo desde al archivo wp-config.php, añadiendo la siguiente línea a continuación de require_once(ABSPATH . 'wp-settings.php');:

add_filter('xmlrpc_enabled', '__return_false');

Protección mediante una función personalizada

Si no eres de instalar plugins, o de tocar archivos del sistema como .htaccess o wp-config.php, también puedes protegerte de los ataques de amplificación de fuerza bruta desactivando la funcionalidad system.multicall del archivo xmlrpc.php. mediante una función que puedes añadir a tu plugin de funcionalidades o al archivo functions.php:

function shapeSpace_disable_xmlrpc_multicall($methods) {
	unset($methods['system.multicall']);
	return $methods;
}
add_filter('xmlrpc_methods', 'shapeSpace_disable_xmlrpc_multicall');

Eso sí, este método tienes pros y contras:

  • Pro – no necesitas instalar otro plugin
  • Pro – no necesitas modificar .htaccess o wp-config.php
  • Contra – solo vale para el tema activo si lo pones en el archivo functions.php
  • Contra – solo vale para este tipo de amenaza concreta

Creo que no hace falta explicar los pros,  y sobre los contras, ten en cuenta que esto solo te protege de ataques al system.multicall y no a otras variables, y que si lo añades al archivo functions.php y cambias de tema estarás expuesto.

En definitiva

Sobre todo debes ser consciente de que el archivo de WordPress xmlrpc.php es un importante foco de ataques, y mientras no haya una solución definitiva para que WordPress no utilice este método de conexión entre aplicaciones ( mediante la WP REST API, por ejemplo) más vale bloquearlo, controlarlo o eliminarlo, ya que es uno de los objetivos principales de ataques de fuerza bruta, vulnerabilidades de pingbacks y ataques de amplificación, entre otros.


Más información:

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 4.3 / 5. Total de votos: 14

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado. ¡Ah! ¿te funciona? pues entonces no he dicho nada :)

Sobre el autor

14 comentarios en “Cómo proteger WordPress de Ataques de amplificación de fuerza bruta”

  1. Otra de las mil y una cosas que se tienen que tocar en WordPress porque la mayoria no la utilizaran en su vida. Ya creo que va siendo hora que le hagan una buena revision al sistema y solo dejen lo necesario y no sigan engordandolo. Pero por lo visto la filosofia de WordPresses es «desactiva y modifica toda la mierda que te pongamos».

      1. Elier Berrios

        Un 600 permitiría a alguien que no sea administrador editar el archivo?… o es que simplemente con que tenga cualquier permiso de lectura en el nivel que sea ya hace al archivo vulnerable?

Deja un comentario

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

Información base sobre privacidad:
- Responsable: Fernando Tellado ([email protected])
- Fin del tratamiento: Moderación de comentarios para evitar spam
- Legitimación: Tu consentimiento
- Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
- Derechos: Acceso, rectificación, portabilidad, olvido

 

Scroll al inicio