
Una herramienta rápida de enumeración de plugins de WordPress
"Porque, ¿para qué escanear a ciegas cuando WordPress se expone por sí solo?"
Un escáner rápido de plugins y temas de WordPress que detecta plugins instalados mediante la enumeración de la API REST y temas a partir del descubrimiento en el 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. Debes actualizar WPProbe.
Por defecto, wpprobe update-db obtiene una base de datos precompilada de este repositorio (actualizada cada 2 horas mediante CI), por lo que no se necesita ninguna clave de API. Si quieres obtener los datos directamente de Wordfence, puedes configurar opcionalmente una clave de 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 (included in kali-rolling)
sudo apt install wpprobe
# Go (requires 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
# From source
git clone https://github.com/Chocapikk/wpprobe && cd wpprobe && go build -o wpprobe
# Mount current directory for input/output files
docker run -it --rm -v $(pwd):/data wpprobe scan -f /data/targets.txt -o /data/results.csv
# Persist vulnerability databases
docker run -it --rm \
-v $(pwd):/data \
-v wpprobe-config:/config \
wpprobe scan -f /data/targets.txt -o /data/results.json
# Update databases
docker run -it --rm \
-v wpprobe-config:/config \
-e WORDFENCE_API_KEY=your_key \
-e WPSCAN_API_TOKEN=your_token \
wpprobe update-db
# Single target
wpprobe scan -u https://example.com
# Multiple targets with threading
wpprobe scan -f targets.txt -t 20
# Custom options
wpprobe scan -u https://example.com \
--header "User-Agent: CustomAgent" \
--proxy http://proxy:8080 \
--rate-limit 10 \
--no-check-version
# Output formats
wpprobe scan -u https://example.com -o results.csv
wpprobe scan -u https://example.com -o results.json
# Update databases (Wordfence requires free API key, WPScan requires Enterprise API token)
wpprobe update-db --api-key your_wordfence_key
# Or use env var
export WORDFENCE_API_KEY=your_key_here
wpprobe update-db
# Search vulnerabilities
wpprobe search --cve CVE-2024-1234
wpprobe search --plugin woocommerce
wpprobe search --severity critical
wpprobe search --auth Unauth
wpprobe search --title "SQL Injection" --details
# Database statistics
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
El modo sigiloso consulta las 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 un número mínimo de peticiones y evita la detección por WAFs.
El modo de fuerza bruta comprueba los directorios de plugins directamente mediante peticiones 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 el sigiloso para una detección de bajo ruido y, después, la fuerza bruta para los plugins restantes. Los temas siempre se descubren mediante el HTML, independientemente del modo.
Los plugins y temas detectados se correlacionan con CVE conocidos de las bases de datos de Wordfence y WPScan, mediante la 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
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. Abre un issue o envía una pull request.
Licencia MIT: consulta el archivo LICENSE para más detalles.
Desarrollado por @Chocapikk.
| Modo | Método | Sigilo | Cobertura |
|---|
stealthy (predeterminado) | Coincidencia de endpoints de la API REST + descubrimiento de temas en el 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 de API de Wordfence para las actualizaciones de la base de datos (gratuita, consíguela aquí) |
WPSCAN_API_TOKEN | Token de API Enterprise de WPScan para las actualizaciones de la base de datos |
HTTP_PROXY / HTTPS_PROXY / ALL_PROXY | Configuración del proxy |
NO_PROXY | Reglas de omisión del proxy |