
Uma ferramenta rápida de enumeração de plugins do WordPress
"Por que escanear às cegas quando o WordPress se expõe?"
Um scanner rápido de plugins e temas do WordPress que detecta plugins instalados por enumeração da API REST e temas por descoberta via HTML e, em seguida, mapeia-os para vulnerabilidades conhecidas. Mais de 5000 plugins detectáveis sem brute-force e milhares mais com ele.
Desde 9 de março de 2026, a Wordfence descontinuou sua API v2. Todas as versões do WPProbe anteriores à v0.10.16 possuem a funcionalidade update-db quebrada. Você precisa atualizar o WPProbe.
Por padrão, wpprobe update-db baixa 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
# Monta 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
# Persiste os 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
# Atualiza os 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 threads
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
# Atualiza os 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
# Busca 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 do Wordfence (gratuita). Defina WPSCAN_API_TOKEN para atualizações do banco de dados do WPScan (somente plano Enterprise).
wpprobe update
Modo stealthy consulta rotas expostas da API REST (?rest_route=/) e compara os endpoints descobertos com um banco de dados pré-compilado de assinaturas conhecidas de plugins. Ele também descobre temas ativos analisando referências a wp-content/themes/ no HTML da página e obtém suas versões a partir do style.css. Isso gera o mínimo de requisições e evita a detecção por WAFs.
Modo brute-force verifica os diretórios de plugins diretamente por meio de requisições GET. Uma resposta 403 confirma que o plugin existe (listagem de diretório proibida). Uma resposta 200 é validada verificando se há readme.txt na listagem do diretório, a fim de evitar falsos positivos de instâncias do WordPress que retornam 200 para todos os caminhos.
Modo híbrido combina ambos: primeiro stealthy para detecção de baixo ruído e, depois, brute-force para os plugins restantes. Os temas são sempre descobertos via HTML, independentemente do modo.
Os plugins e temas detectados são correlacionados com CVEs conhecidos dos bancos de dados Wordfence e WPScan, com correspondência de faixas 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
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. Abra uma issue ou envie um pull request.
Licença MIT - consulte o arquivo LICENSE para detalhes.
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 | Primeiro stealthy, depois brute-force | Média | Máxima |
| Variável | Descrição |
|---|
WORDFENCE_API_KEY | Chave de API do Wordfence para atualizações do banco de dados (gratuita, obtenha uma aqui) |
WPSCAN_API_TOKEN | Token de API Enterprise do WPScan para atualizações do banco de dados |
HTTP_PROXY / HTTPS_PROXY / ALL_PROXY | Configuração de proxy |
NO_PROXY | Regras de bypass de proxy |