
Una herramienta rápida de enumeración de plugins de WordPress
"¿Por qué escanear a ciegas cuando WordPress se expone solo?"
Un escáner rápido de plugins y temas de WordPress que detecta plugins instalados mediante enumeración de la API REST y temas a partir del descubrimiento en HTML, y luego los asocia con vulnerabilidades conocidas. Más de 5000 plugins detectables sin fuerza bruta, y miles más con ella.
Desde el 9 de marzo de 2026, Wordfence dejó obsoleta su API v2. Todas las versiones de WPProbe anteriores a la v0.10.16 tienen la funcionalidad update-db rota. Necesitas actualizar WPProbe.
Por defecto, wpprobe update-db descarga una base de datos precompilada de este repositorio (actualizada cada 2 horas mediante CI), por lo que no se necesita clave API. Si quieres descargar directamente desde Wordfence tú mismo, puedes configurar opcionalmente una clave API gratuita:
--api-keygo install github.com/Chocapikk/wpprobe@latest
wpprobe update-db
wpprobe scan -u https://example.com
wpprobe scan -u https://example.com --mode stealthy
wpprobe scan -u https://example.com --mode bruteforce
wpprobe scan -u https://example.com --mode hybrid
# Kali Linux (incluido en kali-rolling)
sudo apt install wpprobe
# Go (requiere 1.22+)
go install github.com/Chocapikk/wpprobe@latest
# Nix
nix-shell -p wpprobe
# Docker
docker run -it --rm wpprobe scan -u https://example.com
# Desde el código fuente
git clone https://github.com/Chocapikk/wpprobe && cd wpprobe && go build -o wpprobe
# Montar el directorio actual para archivos de entrada/salida
docker run -it --rm -v $(pwd):/data wpprobe scan -f /data/targets.txt -o /data/results.csv
# Persistir las bases de datos de vulnerabilidades
docker run -it --rm \
-v $(pwd):/data \
-v wpprobe-config:/config \
wpprobe scan -f /data/targets.txt -o /data/results.json
# Actualizar bases de datos
docker run -it --rm \
-v wpprobe-config:/config \
-e WORDFENCE_API_KEY=your_key \
-e WPSCAN_API_TOKEN=your_token \
wpprobe update-db
# Objetivo único
wpprobe scan -u https://example.com
# Múltiples objetivos con subprocesos
wpprobe scan -f targets.txt -t 20
# Opciones personalizadas
wpprobe scan -u https://example.com \
--header "User-Agent: CustomAgent" \
--proxy http://proxy:8080 \
--rate-limit 10 \
--no-check-version
# Formatos de salida
wpprobe scan -u https://example.com -o results.csv
wpprobe scan -u https://example.com -o results.json
# Actualizar bases de datos (Wordfence requiere clave API gratuita, WPScan requiere token API Enterprise)
wpprobe update-db --api-key your_wordfence_key
# O usar variable de entorno
export WORDFENCE_API_KEY=your_key_here
wpprobe update-db
# Buscar vulnerabilidades
wpprobe search --cve CVE-2024-1234
wpprobe search --plugin woocommerce
wpprobe search --severity critical
wpprobe search --auth Unauth
wpprobe search --title "SQL Injection" --details
# Estadísticas de la base de datos
wpprobe list
Configura WORDFENCE_API_KEY para las actualizaciones de la base de datos de Wordfence (gratuita). Configura WPSCAN_API_TOKEN para las actualizaciones de la base de datos de WPScan (solo plan Enterprise).
wpprobe update
Solo los binarios instalados desde una versión publicada se actualizan a sí mismos. Una compilación desde el código fuente suele estar por delante de la última versión publicada, por lo que reemplazarla sería una degradación: recompílala desde el repositorio en su lugar, o pasa --force para instalar el binario de la versión publicada de todos modos.
Al iniciarse, WPProbe comprueba la versión publicada más reciente para etiquetar el banner. La respuesta se almacena en caché durante 24 horas, y la comprobación se puede desactivar por completo:
export WPPROBE_NO_UPDATE_CHECK=1
El modo sigiloso consulta rutas expuestas de la API REST (?rest_route=/) y compara los endpoints descubiertos con una base de datos precompilada de firmas de plugins conocidas. También descubre los temas activos analizando las referencias a wp-content/themes/ en el HTML de la página y obtiene su versión desde style.css. Esto genera solicitudes mínimas y evita la detección por WAFs.
El modo de fuerza bruta comprueba los directorios de plugins directamente mediante solicitudes GET. Una respuesta 403 confirma que el plugin existe (listado de directorio prohibido). Una respuesta 200 se valida comprobando si hay readme.txt en el listado del directorio para evitar falsos positivos de instancias de WordPress que devuelven 200 para todas las rutas.
El modo híbrido combina ambos: primero sigiloso para una detección de bajo ruido, luego fuerza bruta para los plugins restantes. Los temas siempre se descubren mediante HTML independientemente del modo.
Los plugins y temas detectados se correlacionan con CVEs conocidos de las bases de datos de Wordfence y WPScan, con coincidencia de rangos de versiones para identificar instalaciones vulnerables.
CSV:
URL,Plugin,Version,Severity,AuthType,CVEs,CVE Links,CVSS Score,CVSS Vector,Title
http://example.com,give,2.20.1,critical,Unauth,CVE-2025-22777,https://www.cve.org/CVERecord?id=CVE-2025-22777,9.8,CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H,GiveWP <= 3.19.3 - Unauthenticated PHP Object Injection
La salida JSON es siempre una matriz, con un objeto por objetivo escaneado, por lo que un solo archivo sigue siendo válido tanto si escaneas una URL como muchas con -f.
JSON:
[
{
"url": "http://example.com",
"plugins": {
"give": [
{
"version": "2.20.1",
"severities": [
{
"critical": [
{
"auth_type": "Unauth",
"vulnerabilities": [
{
"cve": "CVE-2025-22777",
"cve_link": "https://www.cve.org/CVERecord?id=CVE-2025-22777",
"title": "GiveWP <= 3.19.3 - Unauthenticated PHP Object Injection",
"cvss_score": 9.8,
"cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
}
]
}
]
}
]
}
],
"wordpress-seo": [
{
"version": "27.1.1"
}
]
}
}
]
Las contribuciones son bienvenidas. Por favor, abre un issue o envía una pull request.
Licencia MIT: consulta el archivo LICENSE para más detalles.
Los datos de vulnerabilidades provienen de Wordfence Intelligence, proporcionados por Defiant, Inc. Copyright (c) Defiant, Inc. Todos los derechos reservados. La base de datos precompilada publicada en la versión db de este repositorio es una copia procesada de esos datos, redistribuida bajo la licencia otorgada en los Términos y Condiciones de Wordfence Intelligence. Cualquier copia que hagas debe reproducir la designación de copyright de Defiant, Inc. y esa licencia, ambas presentes en NOTICE y escritas junto a la base de datos en disco cuando ejecutas update-db.
WPProbe no está afiliado a Defiant, Inc., ni respaldado o patrocinado por ella.
Desarrollado por @Chocapikk.
| Modo | Método | Sigilo | Cobertura |
|---|
stealthy (predeterminado) | Coincidencia de endpoints de la API REST + descubrimiento de temas en HTML | Alto | 5000+ plugins + temas |
bruteforce | Comprobaciones directas de directorios | Bajo | 10k+ plugins |
hybrid | Primero sigiloso, luego fuerza bruta | Medio | Máxima |
| Variable | Descripción |
|---|
WORDFENCE_API_KEY | Clave API de Wordfence para actualizaciones de la base de datos (gratuita, obtén una aquí) |
WPSCAN_API_TOKEN | Token API Enterprise de WPScan para actualizaciones de la base de datos |
HTTP_PROXY / HTTPS_PROXY / ALL_PROXY | Configuración del proxy |
NO_PROXY | Reglas de omisión del proxy |