Introducción
Hace 48 horas, Searchlight Cyber hizo público un vector de ataque llamado wp2shell que combina dos vulnerabilidades críticas en WordPress Core para lograr Remote Code Execution (RCE) sin autenticación. Los exploits ya están disponibles en GitHub y, según watchTowr, se registraron los primeros intentos de explotación en entornos reales. El riesgo es crítico: más de 500 millones de sitios usan WordPress, y la cadena de ataque funciona incluso en instalaciones por defecto sin plugins.
WordPress respondió con actualizaciones forzadas automáticas para versiones afectadas (6.9.x y 7.0.x), pero el impacto ya es masivo. Si tu infraestructura aloja sitios WordPress, este artículo detalla los componentes afectados, los vectores de ataque, y los pasos concretos para mitigar el riesgo antes de que los atacantes automatizen el escaneo y explotación.
Qué ocurrió
El 12 de mayo de 2026, el equipo de Searchlight Cyber descubrió y reportó a WordPress dos fallos críticos en Core que, al encadenarse, permiten RCE sin autenticación. Los detalles técnicos se mantuvieron en reserva inicialmente para dar tiempo a los administradores a parchear, pero los exploits públicos ya circulan en GitHub y se detectaron intentos de explotación en la naturaleza.
Los fallos afectan a:
- CVE-2026-63030: Confusión en la ruta de la REST API (introducida en WordPress 6.9).
- CVE-2026-60137: Inyección SQL en el parámetro
author__not_indeWP_Query(presente desde WordPress 6.8).
La combinación de ambos permite a un atacante ejecutar código arbitrario en el servidor sin necesidad de credenciales, incluso en instalaciones por defecto. WordPress activó actualizaciones automáticas para versiones 6.9.5 y 7.0.2, pero el 54% de los ataques exitosos no son detectados por los equipos de seguridad según el whitepaper de Picus, lo que aumenta el riesgo de explotación masiva.
Impacto para DevOps / Infraestructura / Cloud / Seguridad
Para equipos de DevOps e infraestructura
- Alcance: Afecta a todas las versiones de WordPress entre 6.9.0 y 7.0.1, incluyendo instalaciones por defecto sin plugins.
- Impacto en cloud: Si tu infraestructura aloja sitios WordPress en AWS, Kubernetes (EKS), o cualquier entorno cloud, el riesgo es alto porque los atacantes pueden escalar de RCE a toma de control del contenedor o instancia.
- Mitigación temporal: Cloudflare ya desplegó reglas en su WAF para bloquear intentos de explotación (incluyendo planes gratuitos), pero no reemplaza el parcheo. Las reglas bloquean:
– Confusión en la REST API (CVE-2026-63030).
Para equipos de seguridad
- CVSS: El vector de RCE sin autenticación tiene un CVSS v3.1 de 9.8 (Crítico).
- Explotación en la naturaleza: watchTowr reportó los primeros intentos de explotación horas después de la publicación de los exploits públicos.
- Detección: Los equipos de seguridad deben priorizar la búsqueda de:
/wp-json/wp/v2/users.– Peticiones maliciosas a la REST API con rutas ambiguas (ej: POST /wp-json/wp/v2/batch).
Para entornos híbridos o multi-nube
- AWS: Si usás Amazon EKS con WordPress en pods, el riesgo de lateralización es alto. Un atacante con RCE puede:
sts:AssumeRole).– Persistir mediante creación de pods con imágenes maliciosas.
- VPNs y firewalls: Los equipos deben revisar reglas de WAF (Cloudflare, AWS WAF, Azure Front Door) para bloquear los payloads conocidos.
Detalles técnicos
CVE-2026-63030: Confusión en la REST API
- Versiones afectadas: WordPress 6.9.0 a 6.9.4 y 7.0.0 a 7.0.1.
- Vector: La REST API en WordPress 6.9 introdujo un endpoint
/wp-json/wp/v2/batchque permite procesar múltiples solicitudes en una sola petición. La confusión ocurre cuando un atacante envía una petición con una ruta ambigua (ej:/wp-json/wp/v2/batch?route=/users/me), lo que lleva a la ejecución de código en el contexto de WordPress. - Exploit público: Un ejemplo en GitHub muestra cómo enviar una petición maliciosa para listar usuarios y luego ejecutar comandos:
POST /wp-json/wp/v2/batch HTTP/1.1
Host: ejemplo.com
Content-Type: application/json
[
{"method": "GET", "path": "/wp-json/wp/v2/users"},
{"method": "POST", "path": "/wp-json/wp/v2/plugins", "body": {"status": "install", "plugin": "<?php system($_GET['cmd']); ?>"}}
]
- Parche: Corregido en WordPress 6.9.5 y 7.0.2.
CVE-2026-60137: Inyección SQL en author__not_in
- Versiones afectadas: WordPress 6.8.0 a 6.8.5 (no permite RCE por sí sola) y 6.9.0 a 7.0.1 (combinada con CVE-2026-63030).
- Vector: El parámetro
author__not_indeWP_Querypermite inyección SQL debido a una sanitización insuficiente. Un atacante puede extraer hashes de contraseñas de usuarios administradores. - Exploit público: Un exploit en GitHub muestra cómo extraer los hashes:
SELECT user_pass FROM wp_users WHERE ID = 1;
- Parche: Corregido en WordPress 6.9.5 y 7.0.2.
Cadena de ataque wp2shell
La combinación de ambos fallos permite:
- Explotar CVE-2026-63030 para obtener una lista de usuarios.
- Explotar CVE-2026-60137 para extraer el hash de la contraseña del administrador.
- Crackear el hash (usando herramientas como Hashcat) y subir un plugin malicioso para ejecutar comandos.
Qué deberían hacer los administradores y equipos técnicos
1. Verificar versiones afectadas y parchear YA
Ejecuta estos comandos para identificar versiones de WordPress:
# En un entorno Linux con WordPress instalado
grep -r "wp_version" /var/www/html/wp-includes/version.php- Si usás WordPress 6.9.x o 7.0.x:
# Actualizar a WordPress 6.9.5 o 7.0.2 (según corresponda)
apt update && apt upgrade wordpress -y
- Si usás WordPress en Docker:
# Actualizar la imagen en tu docker-compose.yml
image: wordpress:7.0.2
- Si no podés actualizar inmediatamente:
# Bloquear acceso a la REST API (solo para entornos de emergencia)
sudo iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string "/wp-json/wp/v2/" -j DROP
– Configurar WAF (Cloudflare, AWS WAF, o Azure Front Door) con reglas para bloquear:
– Peticiones a /wp-json/wp/v2/batch.
– Inyecciones SQL en author__not_in.
2. Revisar logs y monitorear actividad sospechosa
- Buscar en logs de Apache/Nginx:
grep -i "wp-json/wp/v2/batch" /var/log/nginx/access.log
grep -i "author__not_in" /var/log/apache2/access.log
- Alertas en SIEM/EDR:
/wp-json/wp/v2/ con payloads sospechosos.– Monitorear intentos de login fallidos en /wp-admin/.
3. Validar integridad de archivos de WordPress
Si sospechás que tu sitio ya fue comprometido:
# Verificar integridad con WP-CLI
wp core verify-checksums
# Listar plugins y temas sospechosos
wp plugin list --status=dropin
wp theme list --status=dropin4. Actualizar plugins y temas
Los exploits pueden usar plugins vulnerables como vector de persistencia. Ejecuta:
wp plugin update --all
wp theme update --all5. Revisar permisos y políticas de IAM (para entornos cloud)
- AWS: Si WordPress corre en EKS, revisá los permisos de los pods:
# Ejemplo de ServiceAccount con mínimos permisos
apiVersion: v1
kind: ServiceAccount
metadata:
name: wordpress-sa
namespace: wordpress
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: wordpress-role
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
- GCP/Azure: Revisá las políticas de IAM para evitar escalada de privilegios.
Conclusión
La cadena de ataque wp2shell es una de las vulnerabilidades más críticas en WordPress en años: RCE sin autenticación, afecta a millones de sitios, y los exploits ya circulan. Los equipos de DevOps e infraestructura deben priorizar:
- Parchear a WordPress 6.9.5 o 7.0.2 (WordPress ya activó actualizaciones automáticas).
- Bloquear temporalmente la REST API si no podés actualizar.
- Monitorear logs y WAF para detectar intentos de explotación.
El riesgo no es teórico: watchTowr ya reportó los primeros intentos en la naturaleza. Si tu infraestructura aloja WordPress, actuá hoy.
Fuentes
- BleepingComputer: WordPress Core «wp2shell» RCE flaws get public exploits, patch now
- WordPress Security Release: WordPress 7.0.2 and 6.9.5
- Cloudflare: WAF protections for WordPress wp2shell vulnerabilities
- Searchlight Cyber: wp2shell.com (herramienta de verificación)
- GitHub: Exploits públicos para wp2shell
