
Paquete de reproducción y script PoC para CVE-2026-87796, una RCE por carga arbitraria de archivos sin autenticación en Multi Uploader for Gravity Forms <= 1.1.9, con un laboratorio Docker en loopback.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-87796
Multi Uploader for Gravity Forms 1.1.9 — sh1zen
El plugin Multi Uploader for Gravity Forms para WordPress es vulnerable a carga arbitraria de archivos en todas las versiones hasta la 1.1.9, inclusive, a través de la función move_file. Esto se debe a una validación insuficiente del tipo de archivo durante el manejo de cargas fragmentadas. Esto hace posible que atacantes no autenticados carguen archivos arbitrarios en el servidor del sitio afectado, lo que puede hacer posible la ejecución remota de código.
| CVE | CVE-2026-87796 · CVE.org |
| CWE | CWE-434 |
| CVSS | Crítico: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Producto | Multi Uploader for Gravity Forms |
| Afectado | todas las versiones hasta la 1.1.9 (inclusive) |
| Parcheado | parche del proveedor — ver referencias |
| Autenticación | ninguna (ver mapa de código fuente) |
| Laboratorio | solo 127.0.0.1 · paquete de divulgación para proveedor/cliente, no es un escáner |
El aviso nombra move_file. Ese es un método PHP privado, no action= de HTTP. La acción HTTP es gfmu-plupload-submit. Fragmentado vs no fragmentado es REQUEST[chunks]>1. Los nombres de funciones PHP no son action= de admin-ajax.
POST/wp-admin/admin-ajax.phpPOST /wp-admin/admin-ajax.php action=gfmu-plupload-submit (nopriv, GFMUAddon.class.php:125)GFMUHandlePluploader::plupload_ajax_submit nonce gfmu-upload-nonce (GFMUHandlePluploader.class.php:257-262)GFMU_FileUploader::handleUpload chunks>1 (GFMU_FileUploader.php:231-319)move_file copia y luego unlink tmp (GFMU_FileUploader.php:319, 545-560)validateUploadedFile solo DESPUÉS de que el archivo ya está en $target (322) — a diferencia del no fragmentado que valida primero (375)GET /wp-content/uploads/gfmu-uploads-tmp/<name> para POC_WITNESS_87796El GET HTTP del archivo cargado devuelve la cadena única POC_WITNESS_87796. JSON result=success más ese GET es ÉXITO. HTML del tema, admin-ajax 0, o Server error. nonce fail no lo es.
Haz esto primero: Aplica el parche del proveedor para Multi Uploader for Gravity Forms. Ver referencias.
Verificar después de la actualización
CVE-2026-87796-Abraxas-Labs.py contra la compilación parcheada: el testigo mapeado no debe aparecer.Si no puedes actualizar de inmediato
Apunta solo a http://127.0.0.1:8088 (o al loopback que hayas vinculado). No apuntes este script a internet.
python3 CVE-2026-87796-Abraxas-Labs.py
El éxito es el testigo anterior en el cuerpo de la respuesta. Un HTML 200 genérico no lo es.
Stack de loopback usado para reproducir. Imágenes oficiales a menos que un Dockerfile en esta carpeta compile desde el código fuente.
cd lab
docker compose up --force-recreate
Vincula el árbol del producto vulnerable junto a Compose si el YAML monta un directorio local (zip del plugin / etiqueta de código fuente de la tabla de versiones). No publiques nada excepto 127.0.0.1.
plugins.trac.wordpress.org/browser/gf-multi-uploader/tags/1.1.9/GFMUAddon.class.php#L125
plugins.trac.wordpress.org/browser/gf-multi-uploader/tags/1.1.9/inc/GFMU_FileUploader.php#L319
plugins.trac.wordpress.org/browser/gf-multi-uploader/tags/1.1.9/inc/GFMU_FileUploader.php#L322
plugins.trac.wordpress.org/browser/gf-multi-uploader/tags/1.1.9/inc/GFMU_FileUploader.php#L560
www.wordfence.com/threat-intel/vulnerabilities/id/47337bc1-fa3d-470c-9524-859295261017?source=cve
Directorio de plugins: gf-multi-uploader
Navegador Trac: plugins.trac.wordpress.org/gf-multi-uploader
Etiquetas SVN: plugins.svn.wordpress.org/gf-multi-uploader
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
# CVE-2026-87796 (structured records)
- input: `https://nvd.nist.gov/vuln/detail/CVE-2026-87796`
- CWE: CWE-434
- published: 2026-09-17T05:17:02.123
## NVD description
The Multi Uploader for Gravity Forms plugin for WordPress is vulnerable to Arbitrary File Upload in all versions up to, and including, 1.1.9 via the move_file function. This is due to insufficient file type validation during chunked upload handling. This makes it possible for unauthenticated attackers to upload arbitrary files on the affected site's server which may make remote code execution possible.
## MITRE description
The Multi Uploader for Gravity Forms plugin for WordPress is vulnerable to Arbitrary File Upload in all versions up to, and including, 1.1.9 via the move_file function. This is due to insufficient file type validation during chunked upload handling. This makes it possible for unauthenticated attackers to upload arbitrary files on the affected site's server which may make remote code execution possible.
## Affected
- sh1zen Multi Uploader for Gravity Forms 0 affected
## References (JSON sources only)
- https://plugins.trac.wordpress.org/browser/gf-multi-uploader/tags/1.1.9/GFMUAddon.class.php#L125
- https://plugins.trac.wordpress.org/browser/gf-multi-uploader/tags/1.1.9/inc/GFMUHandlePluploader.class.php#L257
- https://plugins.trac.wordpress.org/browser/gf-multi-uploader/tags/1.1.9/inc/GFMU_FileUploader.php#L319
- https://plugins.trac.wordpress.org/browser/gf-multi-uploader/tags/1.1.9/inc/GFMU_FileUploader.php#L322
- https://plugins.trac.wordpress.org/browser/gf-multi-uploader/tags/1.1.9/inc/GFMU_FileUploader.php#L560
- https://www.wordfence.com/threat-intel/vulnerabilities/id/47337bc1-fa3d-470c-9524-859295261017?source=cve
- https://github.com/advisories/GHSA-h7vp-g8q2-89c8
- https://nvd.nist.gov/vuln/detail/CVE-2026-87796
## GitHub advisory
The Multi Uploader for Gravity Forms plugin for WordPress is vulnerable to Arbitrary File Upload...
The Multi Uploader for Gravity Forms plugin for WordPress is vulnerable to Arbitrary File Upload in all versions up to, and including, 1.1.9 via the move_file function. This is due to insufficient file type validation during chunked upload handling. This makes it possible for unauthenticated attackers to upload arbitrary files on the affected site's server which may make remote code execution possible.
Este paquete es para el proveedor, el propietario del sitio y laboratorios con licencia. El script se comunica con 127.0.0.1. Usarlo contra sistemas que no posees no está autorizado por Abraxas Labs. Sin garantía.