CMS (WordPress, Joomla, Drupal)
Los gestores de contenido corren una porción enorme de la web, y su superficie real no es el core —que suele estar razonablemente parcheado— sino plugins, temas y configuraciones. Un WordPress “actualizado” con 30 plugins es 30 bases de código de calidad dispar expuestas bajo el mismo dominio. El patrón de ataque es casi siempre el mismo: fingerprint → enumerar versión de core/plugins/temas/usuarios → CVE conocido o credencial débil → shell.
Modelo de amenaza
Sección titulada «Modelo de amenaza»El atacante no necesita 0-day: necesita un plugin vulnerable sin actualizar, un usuario con contraseña reutilizada, o un panel de administración expuesto. La monocultura ayuda: la misma versión del plugin X es vulnerable en miles de sitios, así que los escáneres masivos encuentran víctimas sin apuntar a nadie en concreto.
WordPress
Sección titulada «WordPress»Descubrimiento y enumeración
Sección titulada «Descubrimiento y enumeración»# fingerprint rápidocurl -s https://target/ | grep -i 'wp-content\|generator'# readme con versión del corecurl -s https://target/readme.html | grep -i version# plugins por rutashttps://target/wp-content/plugins/<plugin>/readme.txt# enumerar usuarios (varias vías)https://target/?author=1 -> redirige a /author/<login>/https://target/wp-json/wp/v2/users -> JSON con loginsHerramienta de referencia:
wpscan --url https://target --enumerate u,vp,vt --api-token TOKEN# u=usuarios vp=plugins vulnerables vt=temas vulnerablesA mano / explotación
Sección titulada «A mano / explotación»- Fuerza bruta a xmlrpc.php:
system.multicallpermite cientos de intentos de login en una sola petición (amplificación). Si está abierto, acelera el bruteforce enormemente. - Login por
wp-login.phpcon la lista de usuarios enumerados + contraseñas reutilizadas. - Subida de shell desde admin: con acceso al panel → Appearance → Theme Editor editando
404.php, o subiendo un plugin ZIP con webshell. Ruta típica tras colar:/wp-content/uploads/o/wp-content/plugins/<x>/. - Plugin vulnerable concreto: casi todo RCE/SQLi/LFI de WP vive aquí; identifica versión y busca el PoC.
CVEs y casos reales (WordPress)
Sección titulada «CVEs y casos reales (WordPress)»- CVE-2022-21661 — SQLi en WP_Query del core (parcheado en 5.8.3).
- File Manager (wp-file-manager) CVE-2020-25213 — RCE sin autenticar, explotado masivamente.
- Elementor / Elementor Pro — múltiples RCE/subida de archivos sin auth en distintas versiones.
- CVE-2023-32243 (Essential Addons) — escalada a cualquier usuario (reset de contraseña).
# versióncurl -s https://target/administrator/manifests/files/joomla.xmlcurl -s https://target/language/en-GB/en-GB.xml- CVE-2023-23752 — divulgación de información sin auth en la API REST: filtra usuario y contraseña de la base de datos (
/api/index.php/v1/config/application?public=true). Devastador y muy explotado. - CVE-2015-8562 — RCE por deserialización en el header User-Agent (histórico, aún aparece).
- Enumeración con joomscan.
# versióncurl -s https://target/CHANGELOG.txt | head- CVE-2018-7600 (Drupalgeddon2) — RCE sin auth por render arrays; uno de los bugs web más explotados de la historia.
- CVE-2018-7602 (Drupalgeddon3) — continuación del anterior.
- CVE-2019-6340 — RCE vía REST/JSON:API con deserialización.
- Enumeración con droopescan.
Red Team — herramientas
Sección titulada «Red Team — herramientas»- wpscan (WP), joomscan (Joomla), droopescan (Drupal, Silverstripe).
- nuclei con plantillas
http/cves/yhttp/technologies/para fingerprint + CVE en masa. - ffuf para fuzzear rutas de admin/plugins ocultos.
Impacto
Sección titulada «Impacto»Con un plugin RCE o un admin comprometido: webshell, pivote al servidor, robo de la base de datos de usuarios (hashes reutilizables), defacement, inyección de malware/SEO spam a todos los visitantes.
Blue Team
Sección titulada «Blue Team»Detección
Sección titulada «Detección»- Peticiones a
xmlrpc.phpconsystem.multicall, ráfagas awp-login.php. - Accesos a
/wp-json/wp/v2/users,?author=N,joomla.xml,CHANGELOG.txt. - Creación de archivos nuevos en
uploads/, modificación de.phpde temas, usuarios admin nuevos.
Telemetría
Sección titulada «Telemetría»Monitoriza integridad de ficheros (FIM) en el webroot, logs de creación de usuarios y de instalación de plugins/temas.
Hardening
Sección titulada «Hardening»- Actualiza core, plugins y temas —y elimina los que no uses; cada plugin inactivo sigue siendo código expuesto.
- Deshabilita
xmlrpc.phpsi no se usa; restringe/wp-adminy/administratorpor IP o 2FA. - Bloquea la enumeración de usuarios (REST users,
?author), desactiva el editor de temas/plugins (DISALLOW_FILE_EDIT). - WAF específico de CMS (reglas para firmas conocidas), permisos de archivo estrictos, deshabilita ejecución PHP en
uploads/. - Principio de mínimo plugin: menos superficie, menos CVEs heredados.
Respuesta
Sección titulada «Respuesta»Aísla el sitio, busca webshells en uploads/ y temas, rota todas las credenciales y claves (wp-config.php salts), reinstala el core desde fuente limpia y audita la base de datos por usuarios/opciones inyectadas.
Checklist de prueba
Sección titulada «Checklist de prueba»- ¿Qué CMS y versión de core? (readme/CHANGELOG/manifests)
- ¿Plugins/temas con versión vulnerable conocida? (wpscan/droopescan/joomscan)
- ¿Enumeración de usuarios posible? (REST,
?author) - ¿
xmlrpc.phpabierto? (amplificación de bruteforce) - ¿Panel de admin expuesto sin 2FA / sin filtro de IP?
- ¿Subida de archivos / editor de temas accesible tras login?
- ¿CVEs críticos sin parchear? (Drupalgeddon, Joomla 2023-23752, WP file-manager)
- ¿
uploads/ejecuta PHP?