XMLRPC.PHP - WordPress, que es y cómo se protege

Aprovechando que el impacto que están teniendo los ataques contra el XMLRPC.PHP de WordPress, me gustaría aclarar ciertos conceptos relacionados con este archivo que forma parte de WordPress y de paso explicar paso a paso como protegerse contra posibles ataques de fuerza bruta y denegación de servicio contra este archivo en una instalación de WordPress.

muchas instalaciones de WordPress están siendo víctimas de ataques variados de diferentes formas: por un lado están las infecciones de malware o inyecciones de código y por el otro lado están los ataques externos contra algunas partes de WordPress como el archivo xmlrpc.php o el wp-login.php.

En este artículo vamos a ir por partes, vamos a ir explicando ciertos aspectos básicos e interesantes sobre el tema, ya que muchos hablan en sus blogs sobre los ataques al XMLRPC.PHP pero muy pocos saben lo que es el protocolo XMLRPC o la función que hace el archivo XMLRPC.PHP en WordPress.

Qué es el XMLRPC

El protocolo XMLRPC es un protocolo que utiliza XML para estructurar datos y el protocolo HTTP para la transmisión de esos datos estructurados en XML.
El protocolo XMLRPC fue desarrollado en 1998 por la empresa UserLand Software en colaboración con Microsoft, finalmente Microsoft considero que el protocolo XMLRPC era muy simple y lo convirtió en lo que ahora mismo se llama SOAP.

En WordPress, el protocolo XMLRPC actual como interfaz que actúa como API para aplicaciones externas y que nos permite interactuar con una instalación de WordPress utilizando aplicaciones o servicios externos.
Al funcionar como una interfaz externa es casi como una “puerta de entrada” por lo que esta puerta puede ser atacada fácilmente desde el exterior causando un alto consumo de recursos al ejecutarse una y otra vez el proceso de autentificación.


WordPress y el XMLRPC.PHP

Como hemos dicho anteriormente, en WordPress el protocolo XMLRPC está gestionado por el archivo XMLRPC.PHP que puedes encontrar en la raíz de la instalación de WordPress:

Para comunicarse con una instalación de WordPress utilizando el protocolo XMLRPC debemos enviar peticiones HTTP mediante POST al archivo xmlrpc.php situado en la raíz de la instalación, con esto obtendremos una respuesta.
Si todo ha ido bien normalmente la respuesta obtenida es HTTP/1.1 200 OK.

Hasta la versión 3.5 WordPress traía de forma predeterminada el protocolo XMLRPC desactivado, desde la versión 3.5 viene activado por defecto, y ahí está el problema, ya que todas las instalaciones traen el protocolo XMLRPC activado y por defecto son vulnerables a ataques de denegación de servicio y fuerza bruta contra este protocolo.

Vamos a poner varios ejemplos de funciones REALES que hace el protocolo XMLRPC en WordPress:

  • El protocolo XMLRPC permite que programas de escritorio como Microsoft Word, Textmate o Mozilla Thunderbird se comuniquen con nuestra instalación de WordPress.
  • El protocolo XMLRPC permite la comunicación mediante pingbacks y trackbacks con otros blogs u otras instalaciones de WordPress.
  • El protocolo XMLRPC es el que permite que funcionen ciertas funciones del plugin Jetpack para WordPress que tiene comunicación directa con los servidores de Automattic.

Posiblemente se me quede alguna cosa más en el tintero que se puede hacer con el XMLRPC.PHP, pero en principio las nombradas anteriormente son las principales.

Ataques al XMLRPC.PHP

Desde hace algún tiempo (desde que el XMLRPC viene activado por defecto en WordPress) los ataques contra el XMLRPC ocurren de forma habitual, el problema es que estos ataques a veces son difíciles de detectar ya que pueden venir desde cientos de direcciones IP al mismo tiempo.
El problema de los ataques al XMLRPC.PHP ya no es solo que puedan encontrar la contraseña y entrar mediante fuerza bruta, sino que estos intentos de autentificación pueden llegar a consumir muchos recursos ya que todas las peticiones deben procesarse, ahí es donde aparece el problema, ya que en planes de hosting compartido con los recursos limitados, esto puede ser realmente un problema.

A diferencia de otro tipo de ataques, el ataque DDOS al archivo XMLRPC.PHP de WordPress es realmente fácil y solo tenemos que tener un ordenador con un sistema operativo Linux y algo de soltura en la consola de comandos de Linux para ejecutar la siguiente línea y atacar a quien nosotros queramos:

https:/dominiosfull.com/images/ayudas-FAQ/wordpress/xmlrpcwordpress1.png

El código está incompleto, más que nada para que a ningún gracioso se le ocurra empezar a atacar sitios web WordPress utilizando el ejemplo, el código anterior simplemente lo he puesto como ejemplo para que se vea lo fácil que es realizar un ataque al XMLRPC.PHP de cualquier instalación de WordPress.

Cuando una instalación de WordPress está bajo ataque al XMLRPC.PHP lo normal es que el uso de recursos de CPU se ponga a tope y el uso de memoria RAM sea también bastante alto:

https://dominiosfull.com/images/ayudas-FAQ/wordpress/xmlrpcwordpress2.png

En este caso, cuando la web se encuentra bajo ataque, la web carga muy lenta y en ocasiones puede mostrar un error 500 – Internal Server Error

En el caso de un servidor VPS con recursos reducidos también puede ser que el servicio MySQL se pare al consumirse todos los recursos de RAM, en estos casos debemos tener extremo cuidado ya que puede dañarse la base de datos al “crashear” el proceso de MySQL.

APLICAR MÉTODO DE PROTECCIÓN  RECOMENDADO:

Cómo Proteger en Archivo XMLRPC agregando Código al archivo .htaccess 

Este es un punto en el que el usuario debe decidir. Es posible anular/bloquear el archivo XMLRCP con sólo añadir un código en el archivo .htaccess:

<files xmlrpc.php>
Order Allow,Deny
Deny from all
</files>

 

-----------
Otros Métodos. 


Protección contra ataques al XMLRPC – Método 1

Existen varios métodos para protegernos contra ataques XMLRPC, y aunque ninguno de los métodos es 100% efectivo, sí que ayudan a mantener la estabilidad de la instalación aunque nos ataquen, evidentemente cuantos más recursos tengamos disponibles en nuestro servidor o en nuestro plan de hosting, más margen de maniobra tendremos en caso de que nos ataquen ya que dispondremos de más recursos.

El primer método de protección consiste en realizar varias modificaciones en varios archivos de WordPress para que no se encuentre el archivo XMLRPC.PHP y también para desactivar las funcionalidades de XMLRPC para que WordPress no muestre ningún error por ello.

Lo primero que vamos a hacer es borrar o cambiar el nombre del archivo XMLRPC.PHP que encontraremos en la raíz de nuestra instalación:

https://dominiosfull.com/images/ayudas-FAQ/wordpress/xmlrpcwordpress2.png

Lo siguiente que debemos hacer es dirigirnos a nuestro archivo wp-config.php de WordPress (también se encuentra en la raíz de la instalación) y debajo de la última línea colocamos lo siguiente:

 

add_filter('xmlrpc_enabled','__return_false');

 

Tal y como se muestra en la siguiente imagen:

Lo siguiente que debemos hacer es dirigirnos al archivo functions.php del theme que tenemos activado y al final debemos añadir el siguiente código:

tener en cuenta de hacerlo antes de cerrar el código con:  ?>

(Copiar y Pegar)

add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );

function remove_xmlrpc_pingback_ping( $methods ) {

   unset( $methods['pingback.ping'] );

   return $methods;

} ;

 

Este método es bastante simple, pero para usuarios poco acostumbrados a WordPress y al mundo web puede ser algo difícil, por esa razón existen otros métodos para desactivar el XMLRPC.PHP y evitar que nos puedan atacar.

Protección contra los ataques al XMLRPC – Método 2

El segundo método es mucho más simple desde el punto de vista de un usuario principiante en WordPress, pero yo cuando lo uso, hasta me quedo algo intranquilo a pesar de que sé que es efectivo y que realmente hace lo mismo que en el método 1 pero de forma automatizada y aprovechando un poco las posibilidades que tienen los plugins en una instalación de WordPress.

En este método 2 usaremos el plugin XMLRPC Attacks Blocker, un plugin gratuito que puede ser descargado desde el repositorio de plugins de WordPress y que permite desactivar el XMLRPC.PHP casi por completo.

Puedes encontrar más información acerca de este plugin para WordPress en la siguiente dirección URL: https://es.wordpress.org/plugins/xmlrpc-attacks-blocker/

La ventaja que tiene usar este plugin es que podríamos incluso seleccionar un único usuario al que le permitiremos acceder mediante el protocolo XMLRPC, además, nos permite bloquear mediante el .htaccess a todas las direcciones IP que intenten utilizar nuestro archivo XMLRPC.PHP una vez desactivado el protocolo.
Sin duda, esta última funcionalidad nombrada es lo que realmente distingue este método del método 1.


Protección contra ataques al XMLRPC – método 3

El método 3 de protección contra ataques XMLRPC en WordPress es realmente rudimentario, es más, se basa en bloquear el acceso al XMLRPC.PHP usando el archivo .htaccess, haciendo una redirección a un error 403.

Primero introducimos lo siguiente en el .htaccess del sitio web (en caso de usar un servidor web compatible con archivos .htaccess):

Lo siguiente que debemos hacer es añadir el siguiente código al funcions.php del theme activo en la instalación de WordPress:

De los cuatro métodos aquí mencionados, este es el único método que yo personalmente no utilizaría.

Protección contra ataques al XMLRPC – Método 4 (NO RECOMENDADO)

Este método también es mediante plugin, pero la técnica utilizada por el plugin cambia, de hecho, es bastante curiosa.
El plugin Stop XML-RPC Attack es un plugin que añade unas líneas al .htaccess del sitio web que simplemente bloquean todo el tráfico entrante al archivo XMLRPC.PHP excepto el tráfico que entra desde rangos de direcciones IP pertenecientes a los servidores de Automattic, es decir, que de esta forma funciona Jetpack.

Sin duda, un método simple, pero bastante curioso, ya que nos permite seguir utilizando el plugin Jetpack for WordPress sin ningún problema.

Puedes encontrar más información acerca de este plugin para WordPress en la siguiente dirección URL: https://es.wordpress.org/plugins/stop-xmlrpc-attack/


Esperamos esta información te sea de gran ayuda y por eso la ponemos a tu disposición.

 

  • 0 Los Usuarios han Encontrado Esto Útil
¿Fue útil la respuesta?

Artículos Relacionados

Como y Porque actualizar WordPress - Actualización Requerida para evitar la suspensión del servicio!

WordPress es el gestor de contenidos CMS con el que están creadas más del 25% de todas las...

Proteger (asegurar) carpeta “uploads” de "WordPress"

Una de las más posibles vías de entrada de intrusos en una instalación "WordPress" es la carpeta...

Proteger (asegurar) archivo wp-login.php en Wordpress para evitar ataques de "fuerza bruta"

Desde años atrás (2013) ha surgido un ataque distribuido a nivel mundial contra instalaciones de...

Firewall y Protección Contra Ataques y SPAM! - Antivirus

IMPORTANTE!! es un hecho que Wordpress se ha convertido en el Asesor de Contenidos mayormente...

WordPress LiteSpeed Cache

WordPress LiteSpeed Cache es tecnología del lado del Servidor diseñado específicamente para...