
Un rapido strumento di enumerazione dei plugin WordPress
"Perché scansionare alla cieca quando WordPress si espone da solo?"
Uno scanner veloce per plugin e temi WordPress che rileva i plugin installati tramite enumerazione dell'API REST e i temi tramite scoperta nell'HTML, per poi associarli a vulnerabilità note. Oltre 5000 plugin rilevabili senza brute-force, migliaia in più con esso.
Dal 9 marzo 2026, Wordfence ha deprecato la propria API v2. Tutte le versioni di WPProbe precedenti alla v0.10.16 hanno la funzionalità update-db non funzionante. Devi aggiornare WPProbe.
Di default, wpprobe update-db scarica un database precompilato da questo repository (aggiornato ogni 2 ore tramite CI), quindi non è necessaria alcuna chiave API. Se vuoi scaricare direttamente da Wordfence, puoi opzionalmente configurare una chiave 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 (incluso in kali-rolling)
sudo apt install wpprobe
# Go (richiede 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
# Da sorgente
git clone https://github.com/Chocapikk/wpprobe && cd wpprobe && go build -o wpprobe
# Monta la directory corrente per i file di input/output
docker run -it --rm -v $(pwd):/data wpprobe scan -f /data/targets.txt -o /data/results.csv
# Persisti i database delle vulnerabilità
docker run -it --rm \
-v $(pwd):/data \
-v wpprobe-config:/config \
wpprobe scan -f /data/targets.txt -o /data/results.json
# Aggiorna i database
docker run -it --rm \
-v wpprobe-config:/config \
-e WORDFENCE_API_KEY=your_key \
-e WPSCAN_API_TOKEN=your_token \
wpprobe update-db
# Singolo target
wpprobe scan -u https://example.com
# Più target con threading
wpprobe scan -f targets.txt -t 20
# Opzioni personalizzate
wpprobe scan -u https://example.com \
--header "User-Agent: CustomAgent" \
--proxy http://proxy:8080 \
--rate-limit 10 \
--no-check-version
# Formati di output
wpprobe scan -u https://example.com -o results.csv
wpprobe scan -u https://example.com -o results.json
# Aggiorna i database (Wordfence richiede chiave API gratuita, WPScan richiede token API Enterprise)
wpprobe update-db --api-key your_wordfence_key
# Oppure usa la variabile d'ambiente
export WORDFENCE_API_KEY=your_key_here
wpprobe update-db
# Cerca vulnerabilità
wpprobe search --cve CVE-2024-1234
wpprobe search --plugin woocommerce
wpprobe search --severity critical
wpprobe search --auth Unauth
wpprobe search --title "SQL Injection" --details
# Statistiche del database
wpprobe list
Imposta WORDFENCE_API_KEY per gli aggiornamenti del database Wordfence (gratuito). Imposta WPSCAN_API_TOKEN per gli aggiornamenti del database WPScan (solo piano Enterprise).
wpprobe update
Solo i binari installati da una release si aggiornano da soli. Una build da sorgente è
solitamente più avanti dell'ultima release, quindi sostituirla sarebbe un downgrade:
ricompilala dal repository invece, oppure passa --force per installare comunque il binario
della release.
All'avvio WPProbe controlla l'ultima release pubblicata per etichettare il banner. La risposta viene memorizzata nella cache per 24 ore, e il controllo può essere disattivato del tutto:
export WPPROBE_NO_UPDATE_CHECK=1
La modalità stealthy interroga le route esposte dell'API REST (?rest_route=/) e confronta gli endpoint scoperti con un database precompilato di firme note dei plugin. Scopre anche i temi attivi analizzando i riferimenti wp-content/themes/ nell'HTML della pagina e ne recupera la versione da style.css. Questo genera richieste minime ed evita il rilevamento da parte dei WAF.
La modalità brute-force controlla direttamente le directory dei plugin tramite richieste GET. Una risposta 403 conferma che il plugin esiste (listing della directory vietato). Una risposta 200 viene validata controllando la presenza di readme.txt nel listing della directory per evitare falsi positivi da istanze WordPress che restituiscono 200 per tutti i percorsi.
La modalità hybrid combina entrambe: prima stealthy per un rilevamento a basso rumore, poi brute-force per i plugin rimanenti. I temi vengono sempre scoperti tramite HTML indipendentemente dalla modalità.
I plugin e i temi rilevati vengono correlati con le CVE note dai database Wordfence e WPScan, con corrispondenza degli intervalli di versione per identificare installazioni vulnerabili.
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
L'output JSON è sempre un array, con un oggetto per ogni target scansionato, quindi un singolo file rimane valido sia che tu scansioni un URL o molti 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"
}
]
}
}
]
I contributi sono benvenuti. Apri una issue o invia una pull request.
Licenza MIT - vedi il file LICENSE per i dettagli.
I dati sulle vulnerabilità provengono da Wordfence Intelligence, forniti da Defiant, Inc. Copyright (c) Defiant, Inc. Tutti i diritti riservati. Il database precompilato pubblicato nella release db di questo repository è una copia elaborata di quei dati, ridistribuita sotto la licenza concessa nei Termini e Condizioni di Wordfence Intelligence. Qualsiasi copia che crei deve riprodurre la designazione di copyright di Defiant, Inc. e quella licenza, entrambe presenti in NOTICE e scritte accanto al database su disco quando esegui update-db.
WPProbe non è affiliato, approvato o sponsorizzato da Defiant, Inc.
Sviluppato da @Chocapikk.
| Modalità | Metodo | Furtività | Copertura |
|---|
stealthy (default) | Corrispondenza endpoint API REST + scoperta temi da HTML | Alta | 5000+ plugin + temi |
bruteforce | Controlli diretti delle directory | Bassa | 10k+ plugin |
hybrid | Prima stealthy, poi brute-force | Media | Massima |
| Variabile | Descrizione |
|---|
WORDFENCE_API_KEY | Chiave API Wordfence per gli aggiornamenti del database (gratuita, ottienila qui) |
WPSCAN_API_TOKEN | Token API WPScan Enterprise per gli aggiornamenti del database |
HTTP_PROXY / HTTPS_PROXY / ALL_PROXY | Configurazione del proxy |
NO_PROXY | Regole di bypass del proxy |