
WRecon é uma ferramenta para reconhecimento de vulnerabilidades e informações blackbox para WordPress.
Uma ferramenta poderosa de reconhecimento e varredura de vulnerabilidades em WordPress baseada em templates
Funcionalidades • Instalação • Uso • Arquitetura • Templates
WPRecon é uma ferramenta moderna de reconhecimento de segurança para WordPress construída em Go que ajuda engenheiros de segurança a identificar vulnerabilidades, configurações incorretas e problemas de divulgação de informações em instalações WordPress.
Diferente dos scanners de vulnerabilidade tradicionais com verificações fixas, o WPRecon usa uma arquitetura de templates baseada em YAML, permitindo:
Identificam resultados positivos nas respostas:
Extraem dados acionáveis de respostas correspondidas:
Mais de 150 templates prontos para produção cobrindo:
# Clone o repositório
git clone https://github.com/ffx64/wprecon.git
cd wprecon
# Compile o binário
go build -o wprecon ./cmd/wprecon/main.go
# Mova para seu PATH (opcional)
sudo mv wprecon /usr/local/bin/
go install github.com/ffx64/wprecon/cmd/wprecon@latest
docker build -t wprecon .
docker run wprecon scan https://example.com
Escaneie um site WordPress com todos os templates disponíveis:
wprecon scan https://example.com
Execute apenas templates selecionados:
wprecon scan https://example.com -t wordpress-detection,plugin-detection,user-enumeration
# Saída JSON para automação
wprecon scan https://example.com --output json
# Tabela formatada (padrão)
wprecon scan https://example.com --output table
# Use 20 workers concorrentes e 100 requisições/segundo
wprecon scan https://example.com --workers 20 --rate-limit 100
wprecon list-templates
wprecon --help
Ao executar uma varredura, o WPRecon produz achados detalhados:
Formato Tabela:
ID | Template | Name | Severity | Target | Evidence
---------------------|------------------------|--------------------------|----------|---------------------|----------
finding_001 | wordpress-version | Versão do WordPress Encontrada | info | example.com | 6.2.1
finding_002 | plugin-detection | Plugin Detectado | baixo | example.com | Yoast SEO 16.0
finding_003 | security-headers | Headers de Segurança Ausentes | médio | example.com | X-Frame-Options
Formato JSON:
{
"scan_id": "scan_uuid_001",
"timestamp": "2026-04-10T14:37:00Z",
"target": "https://example.com",
"total_findings": 15,
"findings": [
{
"id": "finding_uuid_001",
"template_id": "wordpress-detection",
"name": "Instalação WordPress Detectada",
"description": "Instalação do CMS WordPress identificada no alvo",
"severity": "info",
"cvss_score": 0.0,
"matched_url": "https://example.com/wp-admin/",
"http_method": "GET",
"status_code": 200,
"response_time_ms": 245,
"evidence": {
"version": "6.2.1",
"wp_version_header": "6.2.1"
},
"timestamp": "2026-04-10T14:37:00Z",
"remediation": "Mantenha o WordPress atualizado para a versão mais recente"
}
]
}
wprecon/
├── cmd/wprecon/
│ └── main.go # Ponto de entrada da CLI
├── internal/
│ ├── app/
│ │ ├── cli.go # Manipuladores de comandos CLI
│ │ └── api.go # Manipuladores da API REST
│ ├── engine/
│ │ ├── scanner.go # Orquestração da varredura
│ │ ├── worker_pool.go # Motor de paralelização
│ │ ├── context.go # Gerenciamento de contexto da varredura
│ │ ├── logger.go # Utilitários de logging
│ │ └── rate_limit.go # Limitação de taxa
│ ├── executor/
│ │ ├── http_executor.go # Cliente HTTP
│ │ ├── request_builder.go # Construção de requisições
│ │ └── variables.go # Resolução de variáveis
│ ├── matchers/
│ │ └── matchers.go # Lógica de correspondência de respostas
│ ├── extractors/
│ │ └── extractors.go # Extração de dados
│ ├── templates/
│ │ ├── loader.go # Descoberta de templates
│ │ └── parser.go # Parsing YAML
│ ├── pipeline/
│ │ └── pipeline.go # Fluxo de trabalho da varredura
│ └── domain/
│ ├── template.go # Modelos de dados
│ ├── finding.go
│ ├── http.go
│ ├── matcher.go
│ └── extractor.go
├── templates/ # Biblioteca de templates YAML
│ ├── wordpress/ # Específicos do WordPress
│ ├── cves/ # Detecção CVE
│ ├── exposures/ # Divulgação de informações
│ ├── common/ # Verificações genéricas
│ └── waf/ # Detecção WAF
└── go.mod # Dependências
┌─────────────────────────────────────────────┐
│ Interface do Usuário (CLI/API) │
└─────────────────────────────────────────────┘
│
├─→ Carregador de Templates
├─→ Limitador de Taxa
└─→ Gerenciador de Pool de Workers
│
▼
┌─────────────────────────────────────────────┐
│ Motor de Pipeline de Varredura │
│ ┌────────→ Construtor de Requisições │
│ │ ┌────────→ Executor HTTP │
│ │ │ ┌────────→ Matcher (5 tipos) │
│ │ │ │ ┌────────→ Extractor (2 tipos) │
│ │ │ │ │ ┌────────→ Relatório de Achados │
│ │ │ │ │ │ │
│ ▼ ▼ ▼ ▼ ▼ │
│ Template → Requisição → Resposta → Achado │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Formatadores de Saída e Armazenamento │
│ (JSON, Tabela, Geração de Relatórios) │
└─────────────────────────────────────────────┘
Templates são arquivos YAML que definem como o WPRecon deve escanear vulnerabilidades ou informações específicas.
id: wordpress-version-detection
name: Detecção de Versão WordPress
description: Detecta e extrai a versão do WordPress a partir do readme.html
severity: info
author: Equipe WPRecon
requests:
- url: "{{BaseURL}}/readme.html"
method: GET
matchers:
- type: status
status:
- 200
- type: word
words:
- "WordPress"
extractors:
- type: regex
regex:
- 'Version (\d+\.\d+\.\d+)'
templates/custom/Exemplo:
# Crie um template personalizado
cat > templates/custom/my-check.yaml << 'EOF'
id: my-custom-check
name: Minha Verificação Personalizada
description: Detecta vulnerabilidade personalizada
severity: medium
author: Seu Nome
requests:
- url: "{{BaseURL}}/vulnerable-endpoint"
method: GET
matchers:
- type: status
status:
- 200
- type: word
words:
- "vulnerable"
EOF
# Varredura com template personalizado
wprecon scan https://example.com -t my-custom-check
# Timeout HTTP (padrão: 10s)
export WPRECON_TIMEOUT=15
# Número de workers (padrão: 10)
export WPRECON_WORKERS=20
# Requisições por segundo (padrão: 50)
export WPRECON_RATE_LIMIT=100
# Nível de log (padrão: info)
export WPRECON_LOG_LEVEL=debug
# Diretórios de templates (padrão: ./templates)
export WPRECON_TEMPLATE_DIRS=/caminho/para/templates:/caminho/para/mais/templates
wprecon scan <target> \
--templates-dir ./custom-templates \
--workers 20 \
--rate-limit 100 \
--timeout 15 \
--output json \
--log-level debug
Avaliação abrangente de segurança de instalações WordPress:
wprecon scan https://example.com --output json > assessment_report.json
Varredura automatizada de vulnerabilidades em pipelines de deploy:
# Exemplo GitHub Actions
- name: Varredura de Segurança WordPress
run: |
wprecon scan ${{ secrets.STAGING_URL }} \
--output json \
--templates wordpress-detection,plugin-detection,cve-checks
Escaneie múltiplos alvos eficientemente:
cat targets.txt | while read target; do
wprecon scan "$target" --output json >> results.json
done
# Compilar binário
go build -o wprecon ./cmd/wprecon/main.go
# Compilar para múltiplas plataformas
GOOS=linux GOARCH=amd64 go build -o wprecon-linux ./cmd/wprecon/main.go
GOOS=darwin GOARCH=amd64 go build -o wprecon-darwin ./cmd/wprecon/main.go
GOOS=windows GOARCH=amd64 go build -o wprecon-windows.exe ./cmd/wprecon/main.go
google/uuid v1.6.0 - Geração de UUID para achados
gopkg.in/yaml.v3 - Parsing de templates YAML
git checkout -b feature/my-template)templates/wprecon scan https://test.site -t your-templateEste projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Feito com ❤️ para Matheus (ffx64)
| Funcionalidade | Descrição |
|---|
| Varredura Paralela | Pool de workers configurável (padrão: 10 workers) para requisições concorrentes |
| Limitação de Taxa | Throttle de requisições embutido (padrão: 50 req/s) para ser amigável à rede |
| Retry Automático | Lógica automática de retry para requisições HTTP com falha |
| Templates com Hot Reload | Sem necessidade de recompilação - adicione templates e escaneie |
| Resolução de Variáveis | Variáveis dinâmicas: {{BaseURL}}, {{Timestamp}}, {{RandomInt}} |
| Saída Multi-Formato | Tabelas legíveis e JSON estruturado |
| Modos CLI e API | Interface de linha de comando e API REST |
| Níveis de Severidade | Achados classificados como info, baixo, médio, alto, crítico |
| Template | Propósito |
|---|
wordpress-detection | Detectar instalação WordPress |
wordpress-version | Fingerprint da versão WordPress |
plugins.yaml | Detectar plugins instalados |
themes.yaml | Detectar temas instalados |
users.yaml | Enumerar usuários WordPress |