
Exploit für nicht authentifizierte Remote-Codeausführung im WC Designer Pro WordPress-Plugin. Automatisiert die Erkennung, das Hochladen von Dateien und den Shell-Zugriff über einen verwundbaren AJAX-Endpunkt.
Ein nicht-destruktives Proof of Concept für eine nicht authentifizierte Schwachstelle für beliebige Datei-Uploads, die das WordPress-Plugin WC Designer Pro betrifft.
WC Designer Pro enthält eine nicht authentifizierte Schwachstelle für beliebige Datei-Uploads in einer AJAX-Aktion, die über den admin-ajax.php-Endpunkt von WordPress bereitgestellt wird.
Der betroffene Handler verarbeitet vom Benutzer kontrollierte Dateimetadaten und Dateiinhalte, ohne eine ausreichende Authentifizierung, Autorisierung, Erweiterungsvalidierung, MIME-Typ-Validierung oder serverseitige Dateinamenbeschränkungen durchzusetzen.
Unter anfälligen Konfigurationen könnte ein nicht authentifizierter Angreifer eine serverausführbare Datei in ein webbasiert zugängliches Verzeichnis hochladen. Eine erfolgreiche Ausnutzung kann zur Remote-Code-Ausführung mit den Berechtigungen des Webserver-Prozesses führen.
| Eigenschaft | Wert |
|---|---|
| Produkt | WC Designer Pro |
| Plattform | WordPress |
| Schwachstellenklasse | Uneingeschränkter beliebiger Datei-Upload |
| CWE | CWE-434 |
| Authentifizierung erforderlich | Nein |
| Benutzerinteraktion erforderlich | Nein |
| Potenzielle Auswirkung | Remote-Code-Ausführung |
| Angriffskomplexität | Niedrig |
| Anfällige Komponente | WordPress AJAX-Upload-Handler |
| AJAX-Aktion | wcdp_save_canvas_design_ajax |
Der genaue betroffene Versionsbereich, die CVE-Kennung und der CVSS-Score dürfen erst veröffentlicht werden, nachdem sie unabhängig verifiziert wurden.
Eine erfolgreiche Ausnutzung könnte einem nicht authentifizierten Angreifer Folgendes ermöglichen:
Die endgültige Auswirkung hängt von der Webserver-Konfiguration, den PHP-Ausführungsregeln, den Dateisystemberechtigungen und den vom Hosting-Anbieter bereitgestellten Sicherheitskontrollen ab.
Der betroffene Versionsbereich wird derzeit validiert.
Produkt: WC Designer Pro
Betroffene Versionen: Noch zu bestätigen
Behobene Version: Noch zu bestätigen
Patch-Status: Noch zu bestätigen
Geben Sie nicht an, dass jede Version betroffen ist, es sei denn, Tests oder die Bestätigung des Anbieters stützen diese Schlussfolgerung.
Der anfällige Upload-Ablauf scheint den vom Angreifer kontrollierten Werten zu vertrauen, die an die folgende AJAX-Aktion übergeben werden:
wcdp_save_canvas_design_ajax
Die Anfrage enthält Dateimetadaten wie:
Die Schwachstelle besteht, wenn der Server diese Werte akzeptiert, ohne alle folgenden Kontrollen durchzuführen:
Nicht authentifizierte Anfrage
│
▼
/wp-admin/admin-ajax.php
│
▼
action=wcdp_save_canvas_design_ajax
│
▼
Unzureichende Validierung der hochgeladenen Datei
│
▼
Datei wird in ein webbasiert zugängliches Verzeichnis geschrieben
│
▼
Potenzielle serverseitige Code-Ausführung
Der beobachtete Upload-Pfad folgt dieser Struktur:
/wp-content/uploads/wcdp-uploads/temp/{identifier}/{filename}
Der genaue Pfad kann je nach Plugin-Version, WordPress-Konfiguration und Serverumgebung variieren.
pipDieses Proof of Concept darf nicht gegen Systeme Dritter ohne ausdrückliche schriftliche Genehmigung verwendet werden.
Repository klonen:
git clone https://github.com/m2hcz/wcdp-security-poc.git
cd wcdp-security-poc
Virtuelle Umgebung erstellen und aktivieren:
python3 -m venv .venv
source .venv/bin/activate
Unter Windows:
python -m venv .venv
.venv\Scripts\Activate.ps1
Abhängigkeiten installieren:
pip install -r requirements.txt
Beispiel requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
Das Proof of Concept sollte nur gegen ein einzelnes autorisiertes Laborziel ausgeführt werden.
python3 exploit.py --url https://wordpress-lab.example
Für eine nicht-destruktive Verifizierung:
python3 exploit.py \
--url https://wordpress-lab.example \
--file ./payloads/verification.txt
Beispieldatei für die Verifizierung:
WC Designer Pro Sicherheitsverifizierung
Forscher: m2hcz
Zweck: Autorisierter nicht-destruktiver Test
Verwenden Sie den integrierten Hilfe-Befehl, um die unterstützten Argumente anzuzeigen:
python3 exploit.py --help
Beispielausgabe:
usage: exploit.py [-h] --url URL [--file FILE] [--timeout SECONDS]
WC Designer Pro Verifizierungs-PoC für beliebige Datei-Uploads
options:
-h, --help show this help message and exit
--url URL autorisiertes WordPress-Ziel
--file FILE harmlose Verifizierungsdatei
--timeout SECONDS HTTP-Request-Timeout
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: wordpress-lab.example
Content-Type: multipart/form-data; boundary=----Boundary
Die Anfrage ruft Folgendes auf: