WPScan: guía completa con ejemplos para proteger WordPress en 2025

WPScan: guía completa con ejemplos para proteger WordPress en 2025

Si su sitio WordPress aún está expuesto en Internet sin protección, es hora de corregirlo. WPScan es la navaja suiza del pentester, que en diez años de evolución se transformó de un script en Ruby en una herramienta casi indispensable en la lista de verificación DevSecOps. En este artículo se recopilan funciones recientes, opciones de instalación, ejemplos prácticos de ejecución y automatización, y también algunos comentarios personales para que el texto no parezca una documentación seca.

Novedades de WPScan a mayo de 2025

El equipo del proyecto no descansa, y en los últimos años la herramienta recibió varias actualizaciones notables:

  • Imagen de Docker ahora se publica sincronizada con los lanzamientos de GitHub. El escáner arranca sin un montón de dependencias de Ruby, y la actualización se reduce a un simple docker pull.
  • El soporte del formato SARIF facilita la integración con GitHub Advanced Security: los informes aparecen en la pestaña Security sin pasos adicionales.
  • La paralelización asimétrica separa las solicitudes "pesadas" (por ejemplo, brute-force) del análisis pasivo, de modo que un hosting compartido débil deja de colapsar en el primer escaneo.
  • Nuevo modelo de licenciamiento de WPVulnDB: por defecto se ofrecen 25 consultas al día gratis; lo que exceda requiere token o suscripción. Algunos lo recibieron con quejas, pero un análisis tranquilo muestra que 25 consultas cubren las necesidades de la mayoría de sitios individuales.
  • El equipo revisó el motor de detección de endpoints JSON cortos, gracias a lo cual WPScan ahora detecta RCE en APIs REST integradas más rápido de lo que tarda en terminar su café matutino.

Instalación: ¿se puede sin Ruby?

A continuación — tres escenarios prácticos, cada uno con sus ventajas y pequeños peros.

Linux / macOS a través del gestor de paquetes

El método clásico es:

sudo gem install wpscan

Se instala rápido, pero trae muchas Rubygems que luego asustan al actualizar. Si su servidor no es un polígono experimental, es mejor optar por Docker o por los paquetes del repositorio.

Docker — la opción más rápida

docker pull wpscanteam/wpscan
docker run --rm -it wpscanteam/wpscan --help

Se instala en segundos, sin dependencias, y actualizar es otro docker pull. Un inconveniente: el contenedor habrá que conectarlo a la red local si necesita escanear sitios dentro del perímetro.

Windows a través de WSL 2

Para finales de 2025 esto ya no es "magia", sino práctica rutinaria. Instale Ubuntu desde Microsoft Store, luego sudo apt install docker.io, y use el mismo esquema con el contenedor.

Su primer escaneo: ¿da miedo?

El comando mínimo es sorprendentemente simple:

wpscan --url https://example.com --enumerate p

La opción --enumerate p pide a WPScan enumerar los plugins. Con esta simple petición la herramienta puede dar sorpresas: un plugin de 2018 con una vulnerabilidad RCE. ¿Quiere un informe completo en JSON? Añada el token de API y el flag --format json:

wpscan --url https://example.com 
       --api-token $WPSCAN_API_TOKEN 
       --format json -o report.json

El archivo resultante puede integrarse fácilmente en una SIEM o en un pipeline CI/CD. En producción esa automatización ahorra horas de comprobaciones rutinarias.

Interpretación de la salida: leer el resultado

WPScan clasifica los hallazgos por importancia (Info, Warning, Critical) y proporciona un enlace directo a la descripción de la vulnerabilidad en WPVulnDB. Para fallos críticos se muestra la puntuación CVSS, el identificador CVE y, a veces, un PoC listo. Consejo obvio: no abandone la salida del escáner tras las primeras dos líneas. Revise hasta el final para no perder vulnerabilidades en plugins desactivados: siguen en disco y siguen representando un riesgo.

Técnicas avanzadas

Enumeración de usuarios

Una curiosidad conocida de WordPress es el endpoint JSON /wp-json/wp/v2/users. WPScan puede recopilar cuidadosamente los nombres de usuario de los autores:

wpscan --url https://example.com -e u

¿Para qué sirve? Primero, para comprobar si existen usuarios como "admin" o "test". Segundo, para lanzar un brute-force dirigido con un diccionario de contraseñas corporativas, si esa es la tarea.

Escaneo combinado: plugins, temas, base de datos

wpscan --url https://example.com -e vp,vt,cb

vp — plugins, vt — temas, cb — plugins de copia de seguridad de bases de datos. Estos últimos a menudo dejan archivos ZIP abiertos que son indexados por buscadores. Sí, ha entendido bien: se puede descargar la base del sitio si no se cierra esa brecha.

Fuerza bruta, pero con precaución

Los proveedores de hosting suelen bloquear IPs tras varias conexiones fallidas, por eso una pequeña limitación protegerá el sistema nervioso:

wpscan --url https://example.com 
       --passwords rockyou.txt 
       --throttle 0.6 
       --random-user-agent

La mitad del éxito es un diccionario bien elegido. Si prueba un recurso interno, intente añadir políticas de la empresa o nombres de proyectos al inicio del diccionario.

Automatización: WPScan en el pipeline DevSecOps

Lo más sencillo es GitHub Actions. Un job básico ocupa cinco líneas:

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - name: Scan prod
        run: docker run --rm wpscanteam/wpscan 
             --url ${{ secrets.PROD_URL }} 
             --api-token ${{ secrets.WPS_TOKEN }} 
             --format sarif -o result.sarif

GitHub interpretará el informe y lo mostrará como una lista de problemas, donde se pueden priorizar y crear issues. En GitLab se resuelve de forma similar mediante artefactos.

Economía de cron: diario, pero gratis

El límite gratuito de 25 consultas por día es un problema si tiene un parque de sitios. Hay algunos trucos para no arruinarse:

  • Realice los escaneos en días distintos: hoy producción, mañana staging, pasado mañana los entornos de prueba internos.
  • Use --no-update si sabe que WPScan se ejecutó hace unas horas: no hará falta una consulta extra a WPVulnDB.
  • Si hay más de una decena de sitios, sale más barato comprar una suscripción de WPVulnDB que rotar y arriesgarse a perder un nuevo CVE.

Errores típicos y cómo evitarlos

  • Ejecutar sin token. La mitad de la base de WPVulnDB no aparecerá y se obtendrá una falsa sensación de seguridad.
  • Fuerza bruta contra un sitio en producción. La ausencia de retrasos conducirá al baneo de la IP o al colapso de un host débil. Pruebe en copias o implemente retrasos progresivos.
  • Temas/plugins desactivados. Siguen en disco: un atacante puede invocarlos directamente. Elimine ese legado en lugar de solo desactivarlo.
  • Informes sin análisis. El escaneo es la mitad del trabajo. La otra mitad es entender qué es crítico hoy y qué puede planificarse para mañana.

Complementos útiles y alternativas

WPScan no es el único en la fiesta. Si busca otro enfoque, considere:

  1. Wordfence — un plugin pesado pero funcional. Bueno cuando se necesita un cortafuegos activo en el panel de WP.
  2. Sucuri SiteCheck — un escáner en la nube. Se ejecuta en un minuto, pero solo detecta vulnerabilidades visibles desde el exterior.
  3. Pentest‑Tools WPScan SaaS — para quienes no quieren lidiar con la CLI, pero valoran los datos de WPVulnDB.

No obstante, WPScan sigue siendo el estándar de oro gracias a su base actualizada regularmente y a una comunidad activa en Discord y Mastodon, que comparte generosamente nuevos PoC e ideas de optimización.

Preguntas frecuentes

¿WPScan es legal?

Sí, siempre que escanee recursos propios o tenga el consentimiento oficial del propietario. De lo contrario, puede incurrir en delito por acceso no autorizado.

¿Con qué frecuencia actualizar la base de WPVulnDB?

En producción: una vez al día. Si es un recurso con requisitos de seguridad elevados (fintech, medicina), programe cron cada 6 horas y use un token separado para la automatización.

¿Qué hacer si el escáner «se queda colgado»?

Compruebe los flags --max-threads y --throttle. A veces basta reducir el paralelismo. Otra causa típica es un DNS del host inestable. Ejecute dig y asegúrese de que el dominio se resuelva sin retrasos.

Conclusión

Hoy WPScan es más que un script en Ruby. Es parte del ecosistema de seguridad de WordPress que ayuda a controlar plugins de un solo uso y temas de reputación dudosa. Conecte el escáner al CI/CD, recuerde los límites de WPVulnDB y considere que la mitad de los incidentes se evitarán. La otra mitad se gestiona con copias de seguridad regulares y un enfoque DevOps sensato. Éxitos en los escaneos y el mínimo de hallazgos críticos en el informe.

Alt text