
Scanner di sicurezza WordPress asincrono con bypass WAF tramite browser headless. Enumera plugin, temi, utenti e installazioni multisito con fingerprinting stealth e integrazione delle vulnerabilità di WPScan.
█ █░ ██▓███ ▒██ ██▒ ██▀███ ▄▄▄ ▓██ ██▓ ▓█░ █ ░█░▓██░ ██▒ ▒▒ █ █ ▒░▓██ ▒ ██▒▒████▄ ▒██ ██▒ ▒█░ █ ░█ ▓██░ ██▓▒ ░░ █ ░▓██ ░▄█ ▒▒██ ▀█▄ ▒██ ██░ ░█░ █ ░█ ▒██▄█▓▒ ▒ ░ █ █ ▒ ▒██▀▀█▄ ░██▄▄▄▄██ ░ ▐██▓░ ░░██▒██▓ ▒██▒ ░ ░ ▒██▒ ▒██▒░██▓ ▒██▒ ▓█ ▓██▒ ░ ██▒▓░ ░ ▓░▒ ▒ ▒▓▒░ ░ ░ ▒▒ ░ ░▓ ░░ ▒▓ ░▒▓░ ▒▒ ▓▒█░ ██▒▒▒ ▒ ░ ░ ░▒ ░ ░░ ░▒ ░ ░▒ ░ ▒░ ▒ ▒▒ ░▓██ ░▒░ ░ ░ ░░ ░ ░ ░░ ░ ░ ▒ ▒ ▒ ░░ ░ ░ ░ ░ ░ ░░ ░ ░ ░
WPX — WordPress X-Ray Scanner | WAF Bypass
WPX (WordPress X-Ray) è uno scanner di sicurezza che utilizza Camoufox per risolvere le sfide di Cloudflare e WAF. Replica tali sessioni per eseguire una rapida e asincrona scoperta di plugin e temi, enumerazione degli utenti e rilevamento multisito.
Nota: WPX scarica i metadati di scansione necessari (impronte digitali, regole di rilevamento) da data.wpscan.org.
asyncio e curl_cffi per un'enumerazione veloce.wpscan.Il modo più semplice per eseguire WPX — nessun Python o dipendenza necessaria.
docker run ghcr.io/greg-randall/wpx -u https://example.com
docker run -v $(pwd):/output ghcr.io/greg-randall/wpx -u https://example.com -o /output/results.txt
Senza un volume, WPX scarica nuovamente i metadati a ogni esecuzione. Monta un volume con nome per evitarlo:
docker run -v wpx-data:/app/.wpx_data ghcr.io/greg-randall/wpx -u https://example.com
Aggiorna manualmente i metadati quando necessario:
docker run -v wpx-data:/app/.wpx_data ghcr.io/greg-randall/wpx --update
git clone https://github.com/greg-randall/wpx.git
cd wpx
pip install .
python3 -m camoufox fetch
python3 wpx.py -u https://example.com
python3 wpx.py -u https://example.com --api-key YOUR_API_KEY
Scansiona un numero specifico di plugin più popolari (es. i primi 500):
python3 wpx.py -u https://example.com --plugins-limit 500
Scansiona ogni plugin mai creato. WPX può attraversare l'intera libreria storica di circa 110.000 plugin (inclusi circa 55.000 attualmente attivi) per trovare ogni traccia di software sul target. Attenzione: Questa operazione effettua un numero massivo di richieste e può richiedere diverse ore per essere completata a seconda del numero di thread e della reattività del target.
python3 wpx.py -u https://example.com --full-scan
L'enumerazione utenti viene eseguita automaticamente. Per limitare l'intervallo di probe degli ID autore o disabilitarla completamente:
python3 wpx.py -u https://example.com --users-limit 20
python3 wpx.py -u https://example.com --enum-users-disable
Esegui una scansione silenziosamente e salva i risultati in un file senza codici colore ANSI:
python3 wpx.py -u https://example.com --quiet --output results.txt
Per aggiornare le liste dei plugin e classificarli per popolarità:
python3 data/wpx_fetch_plugins.py --sort-by score
Produce data/plugins_active.txt (predefinito primi 5000) e data/plugins_dead.txt (predefinito primi 2500).
Per cambiare i limiti:
python3 data/wpx_fetch_plugins.py --active-limit 10000 --dead-limit 5000
La directory data/ contiene i dataset di plugin elaborati e gli strumenti di manutenzione:
data/plugins_active.txt: Slug dei plugin attivi più popolari ordinati per punteggio di popolarità (media geometrica di installazioni × download).data/plugins_dead.txt: Slug dei plugin chiusi/rimossi più popolari ordinati per conteggio storico delle installazioni (da esecuzioni precedenti del catalogo o snapshot di Archive.org).data/plugins_catalog.json: Metadati nella cache per i plugin attivi.data/plugins_dead.jsonl: Cache append-only dei metadati dei plugin morti, inclusi gli ultimi conteggi di installazione noti. Le nuove voci sovrascrivono quelle vecchie al caricamento (ultima scrittura vince).data/archive.org-cache/: Snapshot HTML grezzi della Wayback Machine, utilizzati per recuperare i conteggi storici di installazione per plugin chiusi prima della prima esecuzione del catalogo.data/wpx_fetch_plugins.py: Fetcher che combina l'API di WordPress.org, il repository SVN e Archive.org per costruire e arricchire le liste dei plugin.wpx.py)data/wpx_fetch_plugins.py)Questo strumento è solo per test di sicurezza autorizzati. Gli sviluppatori non sono responsabili per uso improprio o danni.
| Flag | Descrizione |
|---|
-u, --url | URL WordPress target (obbligatorio). |
--api-key | Chiave API del Database delle Vulnerabilità WPScan. |
-t, --threads | Thread concorrenti per la scansione (Default: 20). |
--plugins-limit | Limita il numero di plugin da scansionare (es. 500, 5000). |
--full-scan | Scansiona tutti gli slug di plugin disponibili (fino a 50k+). |
--update | Forza l'aggiornamento dei file di metadati WPScan. |
--no-browser | Salta il bypass WAF di Camoufox e connetti direttamente. |
--enum-users-disable | Salta l'enumerazione utenti. |
--users-limit N | Numero di ID autore da sondare tramite ?author=N (default: 10). |
--stealth [N] | Aggiunge ritardi casuali tra le richieste. Minimo 1s, massimo 2×N secondi (default quando il flag è impostato: 1.5 → 1–3s). Limita anche i thread a 3. |
--idle-timeout N | Interrompi se non viene ricevuta risposta dal server per N secondi (default: 60, 0 = disabilitato). |
-q, --quiet | Sopprime banner, stato e progresso — mostra solo i risultati. |
-o, --output FILE | Scrivi output su FILE (testo semplice, nessun codice ANSI). |
| Flag | Descrizione |
|---|
--sort-by | Come classificare i plugin attivi: score (default), active_installs, downloaded. |
--active-limit N | Numero di slug attivi da scrivere in plugins_active.txt (default: 5000, 0 = tutti). |
--dead-limit N | Numero di slug morti da scrivere in plugins_dead.txt (default: 2500, 0 = tutti). |
--force | Recupera tutto di nuovo anche se il catalogo esiste già. |
--fetch-limit N | Fermati dopo aver recuperato N plugin attivi dall'API (0 = tutti). |
--max-age ORE | Salta il recupero API se il catalogo è più recente di N ore (default: 24). |