Ir al contenido

XML-RPC Attack Detection

ID de alerta: xmlrpc_attack MITRE ATT&CK: T1110 – Brute Force · T1498 – Network Denial of Service


NivelCondición
Media5–6 requests en 5 minutos
Alta7–9 requests en 5 minutos
Crítica10 o más requests en 5 minutos

  • Amplificación de ataques: system.multicall permite múltiples intentos de login en una sola request.
  • Fuerza bruta eficiente: elude el rate limiting convencional.
  • Vector DDoS: pingback.ping inunda servidores objetivo.
  • Enumeración de usuarios: mediante wp.getUsersBlogs.
  • Protocolo obsoleto: XML-RPC es innecesario en despliegues modernos de WordPress.

  • Umbral: 5 requests a xmlrpc.php en 5 minutos desde una IP.
  • Seguimiento: basado en IP con ventana deslizante.
  • Métodos monitorizados:
    • system.multicall
    • wp.getUsersBlogs
    • pingback.ping
  • Reset: la ventana de seguimiento se resetea tras disparar la alerta.

TipoPatrón / EjemploDescripción
log_patternPOST /xmlrpc.phpRequest al endpoint XML-RPC
networksystem.multicallAtaque de fuerza bruta amplificado
networkwp.getUsersBlogsEnumeración de usuarios válidos
networkpingback.pingAtaques DDoS mediante pingback

  • Conexiones legítimas del plugin Jetpack.
  • Aplicaciones móviles oficiales de WordPress.
  • Plugins que usan publicación remota.
  • Servicios legítimos de trackback/pingback.

  1. Listar requests:

    Ventana de terminal
    grep xmlrpc.php access.log | grep POST
  2. Analizar payloads:

    Ventana de terminal
    tcpdump -A -s 0 'tcp port 80 and host [IP]'
  3. Identificar propósito:

    • system.multicall → ataque de fuerza bruta.
    • pingback.ping → DDoS.
  4. Evaluar impacto: respuestas 200 (exitosas) frente a 403/404 (bloqueadas).


=== “Inmediatas”

!!! danger ""
- Bloquear IP atacante en firewall o WAF.
- Aplicar rate limiting específico para `xmlrpc.php`.
- Deshabilitar XML-RPC completamente si no se usa.

=== “Preventivas”

!!! tip ""
En `.htaccess`:
```apache
<Files xmlrpc.php>
Require all denied
</Files>
```
En `functions.php`:
```php
add_filter('xmlrpc_enabled', '__return_false');
```
- Instalar el plugin **Disable XML-RPC**.
- Implementar reglas WAF específicas para XML-RPC.
- Configurar **jail de Fail2ban** para este endpoint.

  • WordPress XML-RPC Documentation
  • Sucuri – XML-RPC Attack Analysis