Análisis y vulnerabilidades – WordPress (II)

análisis vulnerabilidades wordpress

En la entrada anterior vimos los principales puntos a tener en cuenta durante una revisión de un sitio web que usa WordPress. En esta ocasión realizaremos veremos con un poco más de detalle las vulnerabilidades que puede introducir el servicio xmlrpc.php de WordPress.

Aquí te dejo un vídeo sobre la entrada de hoy:

Atacando xmlrpc

Anteriormente vimos que el servicio «xmlrpc.php» es una API de WordPress que permite realizar acciones en tu blog de forma remota. A continuación, veremos dos de los principales ataques: fuerza bruta y Cross-Site Port Attack.

Fuerza bruta

En 2015 surgió una vulnerabilidad en WordPress relacionada con este tipo de ataque y el servicio xmlrpc que afecta a las versiones anteriores a la 4.4. Aunque está solucionada es importante tenerla en cuenta por si nos encontráramos con algún wordpress de estas versiones.

En un ataque por fuerza bruta tradicional cada intento del conjunto usuario/contraseña se traduce en una petición HTTP. En este caso era posible realizar miles de intentos en una misma petición permitiendo a un atacante probar decenas de miles de combinaciones en unas pocas. Esto se le llama ataque de fuerza bruta amplificado.

En el siguiente ejemplo podéis ver que se hace una petición al método multicall de xmlrpc el cual permite procesar distintas acciones en una misma petición. En nuestro caso todas las acciones son las mismas, getUsersblogs. A la derecha veis la petición dónde se especifica 4 conjuntos de usuario/contraseña y a la izquierda podéis observar la respuesta que, de los 4, uno ha detectado que es correcto.

fuerza bruta amplificada
Ejemplo de vulnerabilidad de fuerza bruta amplificada en WordPress

Cómo he dicho, en la actualidad esta vulnerabilidad está solucionada, aunque esto no quiere decir que no sea posible realizar la fuerza bruta sobre los usuarios. Ahora bien, está deberá ser la «típica» que podamos encontrar en cualquier formulario.

Petición para realizar ataque de fuerza bruta común con Burp Suite

Cross-Site Port Attack

Los ataques XSPA (Cross-Site Port Attack) se basan en la explotación SSRF (Server-Side Request Forgery) y hacen que un servidor realice una conexión a un servicio que esté corriendo en un puerto de otro servidor, esté en la misma red o no. De esta forma el atacante puede realizar un escaneo de puertos sin tener contacto directo con el objetivo principal.

Este ataque se realiza usando el método pingback.ping de xmlrpc.php y, aunque he intentado las mil y unas para poder poner una foto con la prueba de concepto, no me ha funcionado. Si queréis saber más, al final de artículo hay unos enlaces que lo explican. Si en un futuro encuentro el motivo, actualizaré la entrada. Por el momento, aquí os dejo una foto de cómo debería ser la petición:

Petición para realizar un ataque XSPA a través de pingback

DDOS

Al igual que el anterior ataque, este también se realiza con el método pingback.ping y por tanto, parte del mismo esquema. En este escenario lo que se busca no es enumerar puertos sino dejar otra web sin servicio a través del consumo de sus recursos dónde está alojada.

Esto se puede llevar a cabo realizando, de nuevo, un ataque de amplificación. Aquí el flujo de los acontecimientos:

  1. El atacante (A) realiza una petición al servicio de pingback.ping del sitio Wordpres (W) especificando otra página web (B)
  2. W procesará la petición de A y realizará otra hacia B
  3. B verá que le están haciendo un pingback y le dirá a W dónde está la web que ha pedido
  4. W realizará una última petición para descargar el contenido y verificar así que realmente existe

De esta forma si un atacante realiza un ataque distribuído donde todos sus activos realizan una petición a una ruta de la web B, al descargar el contenido (que el atacante se asegurará que sea grande), la dejará inaccesible para otros usuarios por falta de recursos.


Como conclusión de esta entrada comentar que la recomendación evidente para evitar este tipo de ataques es deshabilitar el servicio xmlrpc.php además de tener WordPress actualizado. En el caso que este servicio fuera necesario, existen plugins que ayudan a detectar este tipo de ataques e incluso directamente los filtran.

¡Espero que te haya resultado interesante!

Saludos.

Referencias:

Si te ha sido de ayuda, ¡comparte!

Deja una respuesta