
Uma ferramenta rápida de enumeração de plugins do WordPress
"Por que varrer às cegas quando o WordPress se expõe?"
Um scanner rápido de plugins e temas WordPress que detecta plugins instalados via enumeração da API REST e temas a partir da descoberta em HTML, mapeando-os para vulnerabilidades conhecidas. Mais de 5000 plugins detectáveis sem força bruta, milhares mais com ela.
Desde 9 de março de 2026, a Wordfence descontinuou sua API v2. Todas as versões do WPProbe anteriores à v0.10.16 têm a funcionalidade update-db quebrada. Você precisa atualizar o WPProbe.
Por padrão, wpprobe update-db busca um banco de dados pré-construído deste repositório (atualizado a cada 2h via CI), portanto nenhuma chave de API é necessária. Se você quiser buscar diretamente da Wordfence, pode opcionalmente configurar uma chave 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 (incluído no kali-rolling)
sudo apt install wpprobe
# Go (requer 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
# A partir do código-fonte
git clone https://github.com/Chocapikk/wpprobe && cd wpprobe && go build -o wpprobe
# Monte o diretório atual para arquivos de entrada/saída
docker run -it --rm -v $(pwd):/data wpprobe scan -f /data/targets.txt -o /data/results.csv
# Persista bancos de dados de vulnerabilidades
docker run -it --rm \
-v $(pwd):/data \
-v wpprobe-config:/config \
wpprobe scan -f /data/targets.txt -o /data/results.json
# Atualize bancos de dados
docker run -it --rm \
-v wpprobe-config:/config \
-e WORDFENCE_API_KEY=your_key \
-e WPSCAN_API_TOKEN=your_token \
wpprobe update-db
# Alvo único
wpprobe scan -u https://example.com
# Múltiplos alvos com threading
wpprobe scan -f targets.txt -t 20
# Opções personalizadas
wpprobe scan -u https://example.com \
--header "User-Agent: CustomAgent" \
--proxy http://proxy:8080 \
--rate-limit 10 \
--no-check-version
# Formatos de saída
wpprobe scan -u https://example.com -o results.csv
wpprobe scan -u https://example.com -o results.json
# Atualize bancos de dados (Wordfence requer chave de API gratuita, WPScan requer token de API Enterprise)
wpprobe update-db --api-key your_wordfence_key
# Ou use variável de ambiente
export WORDFENCE_API_KEY=your_key_here
wpprobe update-db
# Pesquise 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
# Estatísticas do banco de dados
wpprobe list
Defina WORDFENCE_API_KEY para atualizações do banco de dados Wordfence (gratuito). Defina WPSCAN_API_TOKEN para atualizações do banco de dados WPScan (somente plano Enterprise).
wpprobe update
Somente binários instalados a partir de um release se atualizam. Uma compilação a partir do código-fonte geralmente está à frente do último release, então substituí-la seria um downgrade: recompile-a a partir do repositório, ou use --force para instalar o binário do release mesmo assim.
Na inicialização, o WPProbe verifica o release publicado mais recente para rotular o banner. A resposta é armazenada em cache por 24 horas, e a verificação pode ser desativada completamente:
export WPPROBE_NO_UPDATE_CHECK=1
Modo furtivo consulta rotas expostas da API REST (?rest_route=/) e corresponde endpoints descobertos contra um banco de dados pré-compilado de assinaturas de plugins conhecidas. Também descobre temas ativos analisando referências a wp-content/themes/ no HTML da página e busca sua versão em style.css. Isso gera solicitações mínimas e evita detecção por WAFs.
Modo de força bruta verifica diretórios de plugins diretamente via solicitações GET. Uma resposta 403 confirma que o plugin existe (listagem de diretório proibida). Uma resposta 200 é validada verificando readme.txt na listagem do diretório para evitar falsos positivos de instâncias WordPress que retornam 200 para todos os caminhos.
Modo híbrido combina ambos: furtivo primeiro para detecção de baixo ruído, depois força bruta para plugins restantes. Temas são sempre descobertos via HTML, independentemente do modo.
Plugins e temas detectados são correlacionados com CVEs conhecidos dos bancos de dados Wordfence e WPScan, com correspondência de faixa de versão para identificar instalações vulneráveis.
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
A saída JSON é sempre um array, com um objeto por alvo varrido, portanto um único arquivo permanece válido quer você varra uma URL ou muitas com -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"
}
]
}
}
]
Contribuições são bem-vindas. Por favor, abra uma issue ou envie um pull request.
Licença MIT - consulte o arquivo LICENSE para detalhes.
Os dados de vulnerabilidades vêm da Wordfence Intelligence, fornecidos pela Defiant, Inc. Copyright (c) Defiant, Inc. Todos os direitos reservados. O banco de dados pré-construído publicado no release db deste repositório é uma cópia processada desses dados, redistribuída sob a licença concedida nos Termos e Condições da Wordfence Intelligence. Qualquer cópia que você fizer deve reproduzir a designação de copyright da Defiant, Inc. e essa licença, ambas em NOTICE e escritas ao lado do banco de dados no disco quando você executa update-db.
O WPProbe não é afiliado, endossado ou patrocinado pela Defiant, Inc.
Desenvolvido por @Chocapikk.
| Modo | Método | Furtividade | Cobertura |
|---|
stealthy (padrão) | Correspondência de endpoints da API REST + descoberta de temas via HTML | Alta | 5000+ plugins + temas |
bruteforce | Verificações diretas de diretórios | Baixa | 10k+ plugins |
hybrid | Furtivo primeiro, depois força bruta | Média | Máxima |
| Variável | Descrição |
|---|
WORDFENCE_API_KEY | Chave de API Wordfence para atualizações do banco de dados (gratuita, obtenha uma aqui) |
WPSCAN_API_TOKEN | Token de API WPScan Enterprise para atualizações do banco de dados |
HTTP_PROXY / HTTPS_PROXY / ALL_PROXY | Configuração de proxy |
NO_PROXY | Regras de bypass de proxy |