
WRecon — это инструмент для распознавания уязвимостей и сбора информации методом черного ящика для WordPress.
Мощный инструмент для разведки и сканирования уязвимостей WordPress, основанный на шаблонах
Возможности • Установка • Использование • Архитектура • Шаблоны
WPRecon — это современный инструмент для разведки безопасности WordPress, написанный на Go, который помогает специалистам по безопасности выявлять уязвимости, ошибки конфигурации и проблемы раскрытия информации в установках WordPress.
В отличие от традиционных сканеров уязвимостей с жёстко прописанными проверками, WPRecon использует архитектуру шаблонов на YAML, что обеспечивает:
Определяют положительные совпадения в ответах:
Извлекают полезные данные из сопоставленных ответов:
150+ готовых к использованию шаблонов, охватывающих:
# Клонируйте репозиторий
git clone https://github.com/ffx64/wprecon.git
cd wprecon
# Соберите бинарный файл
go build -o wprecon ./cmd/wprecon/main.go
# Переместите в PATH (опционально)
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
Сканируйте сайт WordPress со всеми доступными шаблонами:
wprecon scan https://example.com
Запускайте только выбранные шаблоны:
wprecon scan https://example.com -t wordpress-detection,plugin-detection,user-enumeration
# Вывод в JSON для автоматизации
wprecon scan https://example.com --output json
# Табличный формат с красивым выводом (по умолчанию)
wprecon scan https://example.com --output table
# Использовать 20 параллельных рабочих процессов и 100 запросов/сек
wprecon scan https://example.com --workers 20 --rate-limit 100
wprecon list-templates
wprecon --help
При выполнении сканирования WPRecon формирует подробные отчёты:
Табличный формат:
ID | Template | Name | Severity | Target | Evidence
---------------------|------------------------|--------------------------|----------|---------------------|----------
finding_001 | wordpress-version | WordPress Version Found | info | example.com | 6.2.1
finding_002 | plugin-detection | Plugin Detected | low | example.com | Yoast SEO 16.0
finding_003 | security-headers | Missing Security Headers | medium | example.com | X-Frame-Options
Формат 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": "WordPress Installation Detected",
"description": "WordPress CMS installation identified on target",
"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": "Keep WordPress updated to the latest version"
}
]
}
wprecon/
├── cmd/wprecon/
│ └── main.go # CLI entrypoint
├── internal/
│ ├── app/
│ │ ├── cli.go # CLI command handlers
│ │ └── api.go # REST API handlers
│ ├── engine/
│ │ ├── scanner.go # Scan orchestration
│ │ ├── worker_pool.go # Parallelization engine
│ │ ├── context.go # Scan context management
│ │ ├── logger.go # Logging utilities
│ │ └── rate_limit.go # Rate limiting
│ ├── executor/
│ │ ├── http_executor.go # HTTP client
│ │ ├── request_builder.go # Request construction
│ │ └── variables.go # Variable resolution
│ ├── matchers/
│ │ └── matchers.go # Response matching logic
│ ├── extractors/
│ │ └── extractors.go # Data extraction
│ ├── templates/
│ │ ├── loader.go # Template discovery
│ │ └── parser.go # YAML parsing
│ ├── pipeline/
│ │ └── pipeline.go # Scan workflow
│ └── domain/
│ ├── template.go # Data models
│ ├── finding.go
│ ├── http.go
│ ├── matcher.go
│ └── extractor.go
├── templates/ # YAML template library
│ ├── wordpress/ # WordPress-specific
│ ├── cves/ # CVE detection
│ ├── exposures/ # Info disclosure
│ ├── common/ # Generic checks
│ └── waf/ # WAF detection
└── go.mod # Dependencies
┌─────────────────────────────────────────────┐
│ User Interface (CLI/API) │
└─────────────────────────────────────────────┘
│
├─→ Template Loader
├─→ Rate Limiter
└─→ Worker Pool Manager
│
▼
┌─────────────────────────────────────────────┐
│ Scan Pipeline Engine │
│ ┌────────→ Request Builder │
│ │ ┌────────→ HTTP Executor │
│ │ │ ┌────────→ Matcher (5 types) │
│ │ │ │ ┌────────→ Extractor (2 types) │
│ │ │ │ │ ┌────────→ Finding Report │
│ │ │ │ │ │ │
│ ▼ ▼ ▼ ▼ ▼ │
│ Template → Request → Response → Finding │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Output Formatters & Storage │
│ (JSON, Table, Report Generation) │
└─────────────────────────────────────────────┘
Шаблоны — это YAML-файлы, которые определяют, как WPRecon сканирует определённые уязвимости или информацию.
id: wordpress-version-detection
name: WordPress Version Detection
description: Detects and extracts WordPress version from readme.html
severity: info
author: WPRecon Team
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/Пример:
# Create custom template
cat > templates/custom/my-check.yaml << 'EOF'
id: my-custom-check
name: My Custom Check
description: Detects custom vulnerability
severity: medium
author: Your Name
requests:
- url: "{{BaseURL}}/vulnerable-endpoint"
method: GET
matchers:
- type: status
status:
- 200
- type: word
words:
- "vulnerable"
EOF
# Scan with custom template
wprecon scan https://example.com -t my-custom-check
# HTTP timeout (default: 10s)
export WPRECON_TIMEOUT=15
# Number of workers (default: 10)
export WPRECON_WORKERS=20
# Requests per second (default: 50)
export WPRECON_RATE_LIMIT=100
# Log level (default: info)
export WPRECON_LOG_LEVEL=debug
# Template directories (default: ./templates)
export WPRECON_TEMPLATE_DIRS=/path/to/templates:/path/to/more/templates
wprecon scan <target> \
--templates-dir ./custom-templates \
--workers 20 \
--rate-limit 100 \
--timeout 15 \
--output json \
--log-level debug
Комплексная оценка безопасности установок WordPress:
wprecon scan https://example.com --output json > assessment_report.json
Автоматизированное сканирование уязвимостей в конвейерах развёртывания:
# GitHub Actions example
- name: WordPress Security Scan
run: |
wprecon scan ${{ secrets.STAGING_URL }} \
--output json \
--templates wordpress-detection,plugin-detection,cve-checks
Эффективное сканирование нескольких целей:
cat targets.txt | while read target; do
wprecon scan "$target" --output json >> results.json
done
# Сборка бинарного файла
go build -o wprecon ./cmd/wprecon/main.go
# Сборка для нескольких платформ
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 - UUID generation for findings
gopkg.in/yaml.v3 - YAML template parsing
git checkout -b feature/my-template)templates/wprecon scan https://test.site -t your-templateЭтот проект распространяется под лицензией MIT — подробности см. в файле LICENSE.
Сделано с ❤️ для Matheus (ffx64)
| Возможность | Описание |
|---|
| Параллельное сканирование | Настраиваемый пул рабочих процессов (по умолчанию: 10) для одновременных запросов |
| Ограничение скорости | Встроенное регулирование запросов (по умолчанию: 50 запр/с) для бережного отношения к сети |
| Автоповтор | Автоматическая логика повторных попыток при неудачных HTTP-запросах |
| Горячая перезагрузка шаблонов | Не требует перекомпиляции — добавляйте шаблоны и сканируйте |
| Разрешение переменных | Динамические переменные: {{BaseURL}}, {{Timestamp}}, {{RandomInt}} |
| Многоформатный вывод | Человекочитаемые таблицы и структурированный JSON |
| Режимы CLI и API | Интерфейсы командной строки и REST API |
| Уровни критичности | Результаты классифицируются как info, low, medium, high, critical |
| Шаблон | Назначение |
|---|
wordpress-detection | Обнаружение установки WordPress |
wordpress-version | Определение версии WordPress |
plugins.yaml | Обнаружение установленных плагинов |
themes.yaml | Обнаружение установленных тем |
users.yaml | Перечисление пользователей WordPress |