
Reproduktionspaket und PoC-Skript für CVE-2026-87796, eine nicht authentifizierte RCE durch beliebigen Datei-Upload in Multi Uploader for Gravity Forms <= 1.1.9, mit einem Loopback-Docker-Lab.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-87796
Multi Uploader for Gravity Forms 1.1.9 — sh1zen
Das Plugin Multi Uploader for Gravity Forms für WordPress ist in allen Versionen bis einschließlich 1.1.9 über die Funktion move_file anfällig für beliebige Dateiuploads (Arbitrary File Upload). Ursache ist eine unzureichende Dateitypvalidierung bei der Verarbeitung von Chunked-Uploads. Dadurch ist es nicht authentifizierten Angreifern möglich, beliebige Dateien auf den Server der betroffenen Website hochzuladen, was eine Remote-Code-Ausführung ermöglichen kann.
| CVE | CVE-2026-87796 · CVE.org |
| CWE | CWE-434 |
| CVSS | Kritisch: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Produkt | Multi Uploader for Gravity Forms |
| Betroffen | alle Versionen bis einschließlich 1.1.9 |
| Gepatcht | Hersteller-Patch — siehe Referenzen |
| Auth | keine (siehe Source Map) |
| Lab | nur 127.0.0.1 · Vendor/Client-Disclosure-Paket, kein Scanner |
Das Advisory nennt move_file. Das ist eine private PHP-Methode, nicht HTTP action=. Die HTTP-Action ist gfmu-plupload-submit. Chunked vs. non-chunked ist REQUEST[chunks]>1. PHP-Funktionsnamen sind keine admin-ajax action=.
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 kopiert, dann unlink tmp (GFMU_FileUploader.php:319, 545-560)validateUploadedFile erst NACHdem die Datei bereits unter $target liegt (322) — anders als beim Non-Chunked-Pfad, der zuerst validiert (375)GET /wp-content/uploads/gfmu-uploads-tmp/<name> für POC_WITNESS_87796Ein HTTP GET der hochgeladenen Datei liefert die eindeutige Zeichenkette POC_WITNESS_87796. JSON result=success plus dieser GET ist ERFOLG. Theme-HTML, admin-ajax 0 oder Server error. nonce fail ist es nicht.
Zuerst dies tun: Den Hersteller-Patch für Multi Uploader for Gravity Forms anwenden. Siehe Referenzen.
Nach dem Upgrade überprüfen
CVE-2026-87796-Abraxas-Labs.py erneut gegen den gepatchten Build ausführen: Der zugeordnete Nachweis darf nicht erscheinen.Wenn Sie nicht sofort aktualisieren können
Zielen Sie ausschließlich auf http://127.0.0.1:8088 (oder das von Ihnen gebundene Loopback). Richten Sie dieses Skript nicht auf das Internet.
python3 CVE-2026-87796-Abraxas-Labs.py
Erfolg ist der Nachweis oben im Response-Body. Generisches 200 HTML ist es nicht.
Loopback-Stack zur Reproduktion. Offizielle Images, sofern nicht ein Dockerfile in diesem Ordner aus dem Quellcode baut.
cd lab
docker compose up --force-recreate
Binden Sie den verwundbaren Produktbaum neben Compose ein, wenn die YAML ein lokales Verzeichnis mountet (Plugin-Zip / Source-Tag aus der Versionstabelle). Veröffentlichen Sie nichts außer 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
Plugin-Verzeichnis: gf-multi-uploader
Trac-Browser: plugins.trac.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.
Dieses Paket ist für den Hersteller, den Website-Betreiber und lizenzierte Labs bestimmt. Das Skript kommuniziert mit 127.0.0.1. Die Verwendung gegen Systeme, die Ihnen nicht gehören, ist von Abraxas Labs nicht autorisiert. Keine Gewährleistung.