
Scanner de segurança WordPress assíncrono com bypass de WAF via navegador headless. Enumera plugins, temas, usuários e instalações multisite com stealth fingerprinting e integração de vulnerabilidades do WPScan.
█ █░ ██▓███ ▒██ ██▒ ██▀███ ▄▄▄ ▓██ ██▓
▓█░ █ ░█░▓██░ ██▒ ▒▒ █ █ ▒░▓██ ▒ ██▒▒████▄ ▒██ ██▒
▒█░ █ ░█ ▓██░ ██▓▒ ░░ █ ░▓██ ░▄█ ▒▒██ ▀█▄ ▒██ ██░
░█░ █ ░█ ▒██▄█▓▒ ▒ ░ █ █ ▒ ▒██▀▀█▄ ░██▄▄▄▄██ ░ ▐██▓░
░░██▒██▓ ▒██▒ ░ ░ ▒██▒ ▒██▒░██▓ ▒██▒ ▓█ ▓██▒ ░ ██▒▓░
░ ▓░▒ ▒ ▒▓▒░ ░ ░ ▒▒ ░ ░▓ ░░ ▒▓ ░▒▓░ ▒▒ ▓▒█░ ██▒▒▒
▒ ░ ░ ░▒ ░ ░░ ░▒ ░ ░▒ ░ ▒░ ▒ ▒▒ ░▓██ ░▒░
░ ░ ░░ ░ ░ ░░ ░ ░ ▒ ▒ ▒ ░░
░ ░ ░ ░ ░ ░░ ░
░ ░
WPX — Scanner de Raio-X WordPress | Bypass de WAF
WPX (WordPress X-Ray) é um scanner de segurança que usa o Camoufox para resolver desafios Cloudflare e WAF. Ele espelha essas sessões para realizar descoberta rápida e assíncrona de plugins e temas, enumeração de usuários e detecção de multisites.
Nota: WPX baixa os metadados necessários para a varredura (impressões digitais, regras de detecção) de data.wpscan.org.
asyncio e para enumeração rápida.curl_cffiwpscan.A maneira mais fácil de executar o WPX — sem precisar de Python ou dependências.
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
Sem um volume, o WPX baixa novamente os metadados a cada execução. Monte um volume nomeado para evitar isso:
docker run -v wpx-data:/app/.wpx_data ghcr.io/greg-randall/wpx -u https://example.com
Atualize os metadados manualmente quando necessário:
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 SUA_CHAVE_API
Varrer um número específico de plugins mais bem classificados (ex.: top 500):
python3 wpx.py -u https://example.com --plugins-limit 500
Varrer todos os plugins já criados. WPX pode percorrer toda a biblioteca histórica de ~110.000 plugins (incluindo ~55.000 atualmente ativos) para encontrar qualquer vestígio de software no alvo. Aviso: Isso realiza um número massivo de requisições e pode levar várias horas para ser concluído, dependendo do número de threads e da capacidade de resposta do alvo.
python3 wpx.py -u https://example.com --full-scan
A enumeração de usuários é executada automaticamente. Para limitar o intervalo de sondagem de IDs de autor ou desabilitá-la completamente:
python3 wpx.py -u https://example.com --users-limit 20
python3 wpx.py -u https://example.com --enum-users-disable
Executar uma varredura silenciosamente e salvar os resultados em um arquivo sem códigos de cor ANSI:
python3 wpx.py -u https://example.com --quiet --output results.txt
Para atualizar as listas de plugins e classificá-los por popularidade:
python3 data/wpx_fetch_plugins.py --sort-by score
Gera data/plugins_active.txt (padrão top 5000) e data/plugins_dead.txt (padrão top 2500).
Para alterar os limites:
python3 data/wpx_fetch_plugins.py --active-limit 10000 --dead-limit 5000
O diretório data/ contém os conjuntos de dados processados dos plugins e as ferramentas de manutenção:
data/plugins_active.txt: Slugs de plugins ativos mais bem classificados por pontuação de popularidade (média geométrica de instalações × downloads).data/plugins_dead.txt: Slugs de plugins fechados/removidos mais bem classificados por contagem histórica de instalações (obtidos de execuções anteriores do catálogo ou de snapshots do Archive.org).data/plugins_catalog.json: Metadados em cache para plugins ativos.data/plugins_dead.jsonl: Cache somente de acréscimo de metadados de plugins mortos, incluindo contagens de instalação conhecidas. Novas entradas substituem as antigas ao carregar (última escrita vence).data/archive.org-cache/: Snapshots HTML brutos da Wayback Machine, usados para recuperar contagens históricas de instalações para plugins fechados antes da primeira execução do catálogo.data/wpx_fetch_plugins.py: Buscador que combina a API do WordPress.org, o repositório SVN e o Archive.org para construir e enriquecer as listas de plugins.wpx.py)| Flag | Descrição |
|---|---|
-u, --url | URL alvo do WordPress (obrigatório). |
--api-key | Chave da API do Banco de Dados de Vulnerabilidades do WPScan. |
-t, --threads | Threads concorrentes para varredura (Padrão: 20). |
--plugins-limit | Limitar o número de plugins a serem varridos (ex.: 500, 5000). |
--full-scan | Varre todos os slugs de plugins disponíveis (até 50k+). |
--update | Força a atualização dos arquivos de metadados do WPScan. |
--no-browser | Ignorar o bypass de WAF do Camoufox e conectar diretamente. |
--enum-users-disable | Ignorar enumeração de usuários. |
--users-limit N | Número de IDs de autor a sondar via ?author=N (padrão: 10). |
--stealth [N] | Adicionar atrasos aleatórios entre requisições. Mínimo 1s, máximo 2×N segundos (padrão quando a flag é definida: 1.5 → 1–3s). Também limita threads a 3. |
--idle-timeout N | Abortar se nenhuma resposta do servidor for recebida por N segundos (padrão: 60, 0 = desabilitado). |
-q, --quiet | Suprimir banner, status e progresso — mostrar apenas resultados. |
-o, --output FILE | Escrever saída em ARQUIVO (texto simples, sem códigos ANSI). |
data/wpx_fetch_plugins.py)| Flag | Descrição |
|---|---|
--sort-by | Como classificar plugins ativos: score (padrão), active_installs, downloaded. |
--active-limit N | Número de slugs ativos a serem escritos em plugins_active.txt (padrão: 5000, 0 = todos). |
--dead-limit N | Número de slugs mortos a serem escritos em plugins_dead.txt (padrão: 2500, 0 = todos). |
--force | Buscar tudo novamente mesmo que o catálogo já exista. |
--fetch-limit N | Parar após buscar N plugins ativos da API (0 = todos). |
--max-age HORAS | Ignorar busca na API se o catálogo for mais recente que N horas (padrão: 24). |
Esta ferramenta é destinada apenas para testes de segurança autorizados. Os desenvolvedores não são responsáveis por uso indevido ou danos.