Los sondeos al endpoint de procesamiento por lotes de la API REST de WordPress se multiplicaron por más de tres en nuestra infraestructura
En la semana del 26 de octubre, el número de orígenes que solicitaron a nuestra infraestructura el endpoint de procesamiento por lotes de la API REST de WordPress, punto de entrada de la cadena de fallos wp2shell, llegó a 3.3 veces su promedio semanal anterior. Los escáneres también buscaron con más frecuencia copias de seguridad, páginas de depuración y componentes internos de las aplicaciones.
291 Intercept es nuestro informe semanal sobre lo que buscaron los escáneres automatizados en nuestra propia infraestructura, para que puedas revisar tus sistemas en busca de lo mismo. Cada edición cubre una semana que terminó al menos siete días antes.
El cambio más claro en nuestra infraestructura durante la semana del 26 de octubre fue un salto en las solicitudes a una dirección concreta de WordPress: /wp-json/batch/v1. Unos 40 orígenes la solicitaron, 3.3 veces su promedio semanal de las tres semanas anteriores. En ese endpoint comienza wp2shell, una cadena de dos fallos en el núcleo de WordPress que permite a un atacante sin credenciales ejecutar código en un sitio.
Llegó en una semana con más actividad en general: unos 620 orígenes sondearon nuestra infraestructura expuesta a internet, un 10% más que el promedio de las tres semanas anteriores. WordPress siguió siendo el objetivo principal: el 66% de los orígenes fue a por inicios de sesión de WordPress, XML-RPC o rutas de plugins, con un aumento del 20%. Los escáneres también pidieron con más frecuencia partes de una aplicación que deberían permanecer privadas.
Qué es wp2shell
/wp-json/ es la raíz de la API REST de WordPress, y /wp-json/batch/v1 es su procesador por lotes, que gestiona varias solicitudes a la API de una sola vez. Según Rapid7, wp2shell combina dos fallos. CVE-2026-63030 es un fallo lógico en ese procesador por lotes, y CVE-2026-60137 es una inyección SQL en el endpoint de entradas. Encadenados, permiten que alguien sin cuenta ejecute código en WordPress 6.9.0 a 6.9.4 y 7.0.0 a 7.0.1.
El fallo se divulgó el 17 de julio de 2026 y, según Rapid7, CISA lo incorporó a su catálogo Known Exploited Vulnerabilities el 21 de julio. Las versiones corregidas son 6.9.5, 7.0.2 y 7.1 Beta 2.
¿Por qué buscar un fallo que ya tiene solución? A los escáneres no les hace falta que todos los sitios sean vulnerables, les basta con que lo sean algunos. Una solicitud no les cuesta casi nada, y cualquier sitio que siga en una versión afectada merece una segunda visita.
La cara conocida del escaneo de WordPress
Un conjunto de herramientas coordinado, formado por unos 20 orígenes en unos pocos países, recorrió la misma lista de alrededor de diez rutas. Pidió el mismo archivo bajo muchos nombres de carpeta, como /wp/wp-includes/wlwmanifest.xml, /shop/wp-includes/wlwmanifest.xml y /wordpress/wp-includes/wlwmanifest.xml, además de /xmlrpc.php.
wlwmanifest.xml es el manifiesto de Windows Live Writer presente en las instalaciones predeterminadas de WordPress, y pedirlo bajo carpetas habituales es una forma de localizar sitios WordPress antes de probar exploits de plugins o temas. XML-RPC es el paso siguiente: en 2015, unos investigadores descubrieron que su método system.multicall permite a un atacante probar cientos de contraseñas en una sola solicitud.
Restos olvidados y componentes internos
En comparación con las tres semanas anteriores, el número de orígenes que buscaban archivos de copia de seguridad y volcados aumentó un 73%, el de los que iban a por componentes internos de aplicaciones como el actuator de Spring Boot subió un 63%, y el de los que solicitaban páginas de diagnóstico como /phpinfo.php y /info.php creció un 52%. Como el número total de orígenes también aumentó, sus porcentajes variaron menos: las páginas de diagnóstico pasaron de un 15% de todos los orígenes en promedio a un 21%. El gráfico siguiente muestra seis de las categorías de esta semana, cada una con su porcentaje de orígenes de esta semana frente a su promedio de las tres semanas anteriores.
Proporción del total de orígenes distintos que atacaron cada objetivo, en porcentaje. Un origen puede atacar varios objetivos, por lo que las proporciones suman más del 100 %.
| Esta semana | Media de las 3 semanas anteriores | |
|---|---|---|
| Copias de seguridad y volcados de bases de datos | 12% | 9% |
| Endpoints de gestión de aplicaciones | 13% | 9% |
| Páginas de depuración y diagnóstico | 21% | 15% |
| Inicios de sesión y archivos de WordPress | 66% | 61% |
| Código fuente expuesto (Git, SVN) | 29% | 24% |
| Archivos de secretos y de configuración | 33% | 33% |
/actuator/env atrajo a unos 40 orígenes, 2.4 veces su promedio anterior. En Spring Boot, ese endpoint muestra las propiedades de configuración de la aplicación. La documentación de Spring indica que, de forma predeterminada, solo health es accesible por HTTP y que los valores de env aparecen enmascarados, pero cuando los desarrolladores lo exponen sin restringir el acceso, puede filtrar credenciales, claves de API y ajustes internos. /wp-config.php.bak, una copia de seguridad olvidada de la configuración de WordPress, duplicó sus orígenes hasta unos 40.
Un segundo conjunto de herramientas de unos 20 orígenes combinó estos intereses en un solo barrido: /.env, /.git/config, /info.php, /config.json, /server-status y /debug/default/view. Esa última ruta pertenece al depurador de Yii 2, que muestra datos de sesión, variables de entorno y consultas a la base de datos. La guía de Yii indica que normalmente solo funciona desde localhost, pero la CVE-2026-103475, divulgada el 30 de septiembre, afecta a yii2-starter-kit hasta la versión 4.2.0, cuya configuración predeterminada lo abre a todas las direcciones IP.
Seguimiento de la semana pasada
En nuestra edición anterior señalamos que más escáneres buscaban archivos .env en subcarpetas. La tendencia continuó. /v2/.env y /old/.env atrajeron a unos 60 orígenes cada una, aproximadamente el doble de su promedio anterior, con /production/.env en 50 y /storage/.env en 40. En total, 200 orígenes buscaron archivos de secretos y configuración, un 16% más, casi al mismo ritmo que el aumento del total de orígenes, por lo que su porcentaje se mantuvo en el 33%. Para hacerse una idea de la escala, unos investigadores contabilizaron en febrero 12,088,677 direcciones IP que servían archivos de tipo .env accesibles públicamente.
El sondeo de Git que encabezó la edición de la semana pasada perdió peso en porcentaje, pero se mantuvo por encima de su nivel anterior. En total, 170 orígenes buscaron repositorios de código fuente, un 20% más que el promedio de tres semanas, aunque su porcentaje sobre el total de orígenes bajó del 37% al 29%.
Quién hacía las solicitudes
Más de la mitad de los orígenes (55%) procedía de redes de nube y hosting, con DigitalOcean y Google Cloud con un 20% cada una, y el 85% de todos los orígenes apareció un solo día. La mayoría también intentó hacerse pasar por personas: el 82% envió cadenas de agente de usuario que imitaban navegadores corrientes, pero el 85% se comportó como un sistema automatizado, así que el disfraz es poco convincente.
Lo que dejó de verse
Las solicitudes de /wp-content/plugins/hellopress/wp_filemanager.php, que rondaban los 20 orígenes por semana, cayeron casi a cero, un 79% menos. Es pronto para saber si los escáneres han pasado a otra cosa. Los archivos de claves de nube como /service-account.json se mantuvieron más o menos estables, en 70 orígenes.
Qué hacer
- Comprueba tu versión de WordPress. Si está entre 6.9.0 y 6.9.4 o entre 7.0.0 y 7.0.1, actualiza ya a 6.9.5 o 7.0.2.
- Mantén los archivos .env completamente fuera de la carpeta pública, incluidas las versiones antiguas y las subcarpetas por versión. El lugar seguro es un nivel por encima de la raíz web.
- Elimina las copias de seguridad y los volcados como
/database.sqlo/wp-config.php.bakde cualquier ubicación accesible desde un navegador. - Protege los componentes internos. Restringe los endpoints del actuator de Spring Boot y deja activado el enmascaramiento de env, elimina las páginas de prueba de phpinfo y mantén el depurador de Yii limitado a localhost.
- Desactiva XML-RPC si nada en tu sitio lo necesita.
Acerca de estas observaciones
Este informe lo elabora 291 Heat Seeker One, el sistema de monitorización de seguridad de 291 Group, que funciona sobre 291 Crossband, nuestra plataforma propia de operaciones de seguridad. Solo abarca el tráfico dirigido a la infraestructura de 291 Group expuesta a internet.
Las cifras están redondeadas; los porcentajes y las variaciones se miden por el número de orígenes distintos y no por el de solicitudes, y solo se incluyen patrones observados desde al menos 20 orígenes distintos. Los países indican dónde están los servidores de origen, no necesariamente dónde están las personas que los operan. Los tipos de red se determinan según quién opera cada red; solo se mencionan proveedores grandes y conocidos.