
WRecon ist ein Werkzeug zur Erkennung von Schwachstellen und Blackbox-Informationen für WordPress.
Ein leistungsstarkes, vorlagenbasiertes WordPress-Reconnaissance- und Schwachstellenscanner-Tool
Funktionen • Installation • Verwendung • Architektur • Vorlagen
WPRecon ist ein modernes WordPress-Sicherheits-Reconnaissance-Tool, das in Go geschrieben wurde und Sicherheitsingenieuren hilft, Schwachstellen, Fehlkonfigurationen und Informationspreisgaben in WordPress-Installationen zu identifizieren.
Im Gegensatz zu traditionellen Schwachstellenscannern mit fest codierten Prüfungen verwendet WPRecon eine YAML-gesteuerte Vorlagenarchitektur, die Folgendes ermöglicht:
Identifizieren positive Treffer in Antworten:
Extrahieren verwertbare Daten aus übereinstimmenden Antworten:
150+ produktionstaugliche Vorlagen, die Folgendes abdecken:
# Repository klonen
git clone https://github.com/ffx64/wprecon.git
cd wprecon
# Binärdatei erstellen
go build -o wprecon ./cmd/wprecon/main.go
# In den PATH verschieben (optional)
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
Eine WordPress-Website mit allen verfügbaren Vorlagen scannen:
wprecon scan https://example.com
Nur ausgewählte Vorlagen ausführen:
wprecon scan https://example.com -t wordpress-detection,plugin-detection,user-enumeration
# JSON-Ausgabe für Automatisierung
wprecon scan https://example.com --output json
# Hübsch gedruckte Tabelle (Standard)
wprecon scan https://example.com --output table
# 20 gleichzeitige Worker und 100 Anfragen/Sekunde verwenden
wprecon scan https://example.com --workers 20 --rate-limit 100
wprecon list-templates
wprecon --help
Beim Ausführen eines Scans erzeugt WPRecon detaillierte Funde:
Tabellenformat:
ID | Vorlage | Name | Schweregrad | Ziel | Beweis
---------------------|-------------------------|--------------------------|-------------|--------------------|----------
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-Format:
{
"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-Einstiegspunkt
├── internal/
│ ├── app/
│ │ ├── cli.go # CLI-Befehlshandler
│ │ └── api.go # REST-API-Handler
│ ├── engine/
│ │ ├── scanner.go # Scan-Orchestrierung
│ │ ├── worker_pool.go # Parallelisierungs-Engine
│ │ ├── context.go # Scan-Kontextverwaltung
│ │ ├── logger.go # Protokollierungsdienstprogramme
│ │ └── rate_limit.go # Ratenbegrenzung
│ ├── executor/
│ │ ├── http_executor.go # HTTP-Client
│ │ ├── request_builder.go # Anforderungserstellung
│ │ └── variables.go # Variablenauflösung
│ ├── matchers/
│ │ └── matchers.go # Antwortabgleichslogik
│ ├── extractors/
│ │ └── extractors.go # Datenextraktion
│ ├── templates/
│ │ ├── loader.go # Vorlagenfindung
│ │ └── parser.go # YAML-Parsing
│ ├── pipeline/
│ │ └── pipeline.go # Scan-Workflow
│ └── domain/
│ ├── template.go # Datenmodelle
│ ├── finding.go
│ ├── http.go
│ ├── matcher.go
│ └── extractor.go
├── templates/ # YAML-Vorlagenbibliothek
│ ├── wordpress/ # WordPress-spezifisch
│ ├── cves/ # CVE-Erkennung
│ ├── exposures/ # Informationspreisgabe
│ ├── common/ # Allgemeine Prüfungen
│ └── waf/ # WAF-Erkennung
└── go.mod # Abhängigkeiten
┌─────────────────────────────────────────────┐
│ Benutzeroberfläche (CLI/API) │
└─────────────────────────────────────────────┘
│
├─→ Vorlagenlader
├─→ Ratenbegrenzer
└─→ Worker-Pool-Manager
│
▼
┌─────────────────────────────────────────────┐
│ Scan-Pipeline-Engine │
│ ┌────────→ Anforderungsersteller │
│ │ ┌────────→ HTTP-Ausführer │
│ │ │ ┌────────→ Matcher (5 Typen) │
│ │ │ │ ┌────────→ Extractor (2 Typen) │
│ │ │ │ │ ┌────────→ Fundbericht │
│ │ │ │ │ │ │
│ ▼ ▼ ▼ ▼ ▼ │
│ Vorlage → Anforderung → Antwort → Fund │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Ausgabeformatierer & Speicher │
│ (JSON, Tabelle, Berichtsgenerierung) │
└─────────────────────────────────────────────┘
Vorlagen sind YAML-Dateien, die definieren, wie WPRecon nach bestimmten Schwachstellen oder Informationen scannen soll.
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/Beispiel:
# Benutzerdefinierte Vorlage erstellen
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
# Mit benutzerdefinierter Vorlage scannen
wprecon scan https://example.com -t my-custom-check
# HTTP-Timeout (Standard: 10s)
export WPRECON_TIMEOUT=15
# Anzahl der Worker (Standard: 10)
export WPRECON_WORKERS=20
# Anfragen pro Sekunde (Standard: 50)
export WPRECON_RATE_LIMIT=100
# Protokollstufe (Standard: info)
export WPRECON_LOG_LEVEL=debug
# Vorlagenverzeichnisse (Standard: ./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
Umfassende Sicherheitsbewertung von WordPress-Installationen:
wprecon scan https://example.com --output json > assessment_report.json
Automatisiertes Schwachstellenscanning in Bereitstellungspipelines:
# GitHub Actions-Beispiel
- name: WordPress Security Scan
run: |
wprecon scan ${{ secrets.STAGING_URL }} \
--output json \
--templates wordpress-detection,plugin-detection,cve-checks
Mehrere Ziele effizient scannen:
cat targets.txt | while read target; do
wprecon scan "$target" --output json >> results.json
done
# Binärdatei erstellen
go build -o wprecon ./cmd/wprecon/main.go
# Für mehrere Plattformen erstellen
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-Generierung für Funde
gopkg.in/yaml.v3 - YAML-Vorlagenparsing
git checkout -b feature/my-template)templates/ hinzufügenwprecon scan https://test.site -t your-templateDieses Projekt ist unter der MIT-Lizenz lizenziert – siehe LICENSE-Datei für Details.
Mit ❤️ für Matheus (ffx64)
| Funktion | Beschreibung |
|---|
| Parallelscanning | Konfigurierbarer Worker-Pool (Standard: 10 Worker) für gleichzeitige Anfragen |
| Ratenbegrenzung | Integrierte Anforderungsdrosselung (Standard: 50 req/s) für netzwerkfreundliches Verhalten |
| Automatische Wiederholung | Automatische Wiederholungslogik für fehlgeschlagene HTTP-Anfragen |
| Hot-Reload-Vorlagen | Keine Neukompilierung erforderlich – Vorlagen hinzufügen und scannen |
| Variablenauflösung | Dynamische Variablen: {{BaseURL}}, {{Timestamp}}, {{RandomInt}} |
| Multi-Format-Ausgabe | Lesbare Tabellen und strukturiertes JSON |
| CLI- & API-Modi | Sowohl Befehlszeilen- als auch REST-API-Schnittstellen |
| Schweregrade | Funde klassifiziert als info, low, medium, high, critical |
| Vorlage | Zweck |
|---|
wordpress-detection | WordPress-Installation erkennen |
wordpress-version | WordPress-Version identifizieren |
plugins.yaml | Installierte Plugins erkennen |
themes.yaml | Installierte Themes erkennen |
users.yaml | WordPress-Benutzer aufzählen |