Ataque de fuerza bruta amplificado con el método system.multicall

Los ataques amplificados multiplican las acciones de los ciberdelincuentes, y sus efectos son tan evidente como en los ataques de tipo DoS o tan desapercibidos (pero demoledores) como el que trataremos en esta entrada.

El método system.multicall está habilitada por defecto en el XMP-RPC de Drupal y WordPress. Como su nombre lo indica, permite realizar múltiples llamas a métodos en una sola petición HTTP y se utiliza en la realización de operaciones masivas como la eliminación de numerosos comentarios, ediciones de varias entradas, entre otras operaciones en lote. Las llamadas se empaquetan en una lista que funciona como parámetro de entrada de system.multicall, se estructura en un documento XML y se envía utilizando el método POST.

Muchas de los métodos que están disponibles en los CMS mediante XML-RPC, requieren que el usuario se autentique. Por ejemplo, el método getUsersBlogs retorna la lista de usuarios pero requiere que el solicitante tenga autorización para acceder a dicha información. Los ciberdelincuentes hace mucho tiempo que se aprovechan de esto y realizan peticiones continuas a métodos de esta clase, en un esfuerzo por adivinar la contraseña de los usuarios. Para lograr su objetivo, tienen que hacer una petición HTTP individual por cada intento de autenticación, creando un patrón inusual en los registros del servidor, lo que puede y debe levantar la alerta en los IDS correspondientes.

En este escenario, el método system.multicall, viene a empeorar la situación, pues permite que los atacantes empaqueten decenas y cientos de peticiones de autenticación en una sola llamada HTTP. Por supuesto, si los IDS están configurados para disparar la alarma luego de 10 peticiones continuas de autenticación, en este caso, estaríamos tratando con ¡100 intentos! pero en una simple petición HTTP, y esta pasaría desapercibida pues 1Esta característica lo convierte en un ataque amplificado (Figura 1).

Figura 1 - Representación de ataques amplificados system.multicall  tomada de cloudflare.com.png

Figura 1. Ataque de fuerza bruta amplificado con el método system.multicall. Tomado de blog.cloudflare.com.

En el caso que tu CMS tenga el XML-RPC habilitado, puedes comprobar directamente en el archivo xmlrpc.php o el directorio xmlrpc (según como esté implementado en cada caso). También puedes conocer si el método system.multicall está habilitado, construyendo un llamado al método system.listMethods con cURL del siguiente modo:

Paso 1. Estructurar la llamada al método system.listMethods en un documento XML (ej. listMethods.xml).

Figura 2 - Estructura de llamada xmprpc.png

Figura 2. Estructuración de la llamada al método system.listMethods. Elaboración propia.

Paso 2. Realizar la petición HTTP POST a la ruta http://mi.app.web.com/xmlrpc.php

curl -d @listMethods.xml http://mi.app.web.com/xmlrpc.php

Paso 3. Inspeccionar el documento XML de respuesta, buscando la cadena system.multicall

figura-2-system-multicall

Figura 3. Respuesta recibida del método system.listMethods donde se incluye system.multicall. Elaboración propia.

Recomendaciones para evitar un ataque de fuerza bruta amplificado con el método system.multicall

Los autores consultados coinciden en la necesidad de bloquear el acceso a xmlrpc.php en aquellos casos (la inmensa mayoría) que no se usa. Si lo requiere un plugin muy específico como JetPack, debe bloquearse el acceso al método system.multicall vía firewall o mediante código fuente. Muchos proponen una solución más radical, eliminando simplemente el archivo xmlrpc.php. En mi criterio debes hacer una búsqueda, teniendo en cuenta tu plataforma, versión y plugins usados, para encontrar la vía más adecuada e inocua para tu aplicación web.

Consideraciones finales

XML-RPC es un protocolo para la realización de llamadas remotas a procedimientos. Por este motivo no coincido con el nombre de ataque XML-RPC. Creo que es más adecuado referirse al método en cuestión que es explotado. Las vulnerabilidades de XML-RPC se producen por dos vías, la primera está dada por la implementación de los métodos disponibles a consumir  y las acciones que estos permiten realizar en el sistema y segundo, el desconocimiento de muchos administradores sobre XMLR-RPC, su habilitación por defecto y su funcionamiento como punto de entrada.

Les propongo revisar estas referencias para profundizar sobre el tema:

Espero que te haya gustado la entrada, yo por mi parte me he divertido bastante escribiéndola.

S4lud0s y h4st4 el próx1m0 p0st!!!

3 comentarios en “Ataque de fuerza bruta amplificado con el método system.multicall

  1. Pingback: WPScan a fondo para webmaster | Behique Digital

  2. Pingback: Cómo deshabilitar el XML-RPC en WordPress (Apache y Nginx) | Behique Digital

  3. Pingback: ¿Qué es lo nuevo en el OWASP Top 10 2017 R1? | Behique Digital

Deja un comentario