
PoC Python per CVE-2026-102425: RCE non autenticato in Joomla Balbooa Forms (com_baforms) tramite iniezione di shortcode nei campi durante la eval() PHP post-invio. Modalità check, exploit e mass.
PoC in Python 3 per CVE-2026-102425 — estensione Joomla Balbooa Forms di balbooa.com — esecuzione di codice in remoto non autenticata tramite iniezione di shortcode di campo nelle azioni opzionali PHP-after-submission (eval()).
| | |
|---|---|
| PoCbit | https://pocbit.org/pocs/cve-2026-102425 |
| CVE.org | https://www.cve.org/CVERecord?id=CVE-2026-102425 (PUBLISHED 2026-09-29) |
| NVD | https://nvd.nist.gov/vuln/detail/CVE-2026-102425 |
| CNA | Joomla! Project |
| Componente | com_baforms |
| Affette | 1.0.0 – 2.4.3.3 |
| Fix | ≥ 2.4.3.4 |
| CWE | CWE-94 (Code Injection) |
| CVSS 4.0 | 9.5 Critical — CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
| Scopritori | Łukasz Rybak, Sergiy Tryzhychynskyi |
Balbooa Forms consente agli amministratori di definire codice PHP che viene eseguito dopo l'invio di un form pubblico. Quel PHP può contenere shortcode di campi del form. Prima di eval(), il componente sostituisce ogni shortcode con il valore grezzo inviato dal visitatore (nessun escaping).
CVE-2026-102425 è sfruttabile quando tutte le seguenti condizioni sono soddisfatte:
Versione dell'estensione < 2.4.3.4.
Un form pubblico utilizza l'azione opzionale PHP-after-submission.
Quel PHP interpola uno shortcode di campo controllato dall'attaccante all'interno di una stringa PHP racchiusa tra doppi apici (classico breakout: ";echo …;//).
CVSS AT:P (Attack Requirements: Present) significa che deve esistere la configurazione vulnerabile — installare il componente da solo non è sufficiente.
Questo non è CVE-2026-67364 (shortcode di query [URL parameter = X], corretto in 2.4.3.2). Usa --include-67364 solo se testi intenzionalmente quel problema separato.
Stesso componente, stesso ciclo di rilascio: correggi anche CVE-2026-102424, -101127, -101112, -101126 (vedi mySites.guru).
| Modalità | Comportamento |
|------|----------|
| check | com_baforms, versione del manifest, affected_version (< 2.4.3.4), public_form_detected tramite loadAjaxForm / embed |
| check hit predefiniti | hits.txt solo se affetto e un form pubblico HTML viene caricato (coda di exploit) |
| check --all-affected | Elenca anche qualsiasi host su versione vulnerabile (triage FOFA rumoroso) |
| check --aggressive | Più percorsi, scansione ID loadAjaxForm, più probe sui form |
| exploit | Invio form.message (moderno) + task legacy; payload shortcode di campo (breakout con doppi apici) |
| exploit --include-67364 | Aggiunge tentativi con shortcode di parametro URL (classe 67364) |
| exploit --aggressive | Scraping completo + discovery loadAjaxForm (più lento) |
| --lab | Mock locale: eval con doppi apici + iniezione di campo |
| mass | --list + -j → JSONL, hits.txt, exploited.txt |
Le righe JSONL includono cve_state, cve_record, nvd, cvss_v4_vector, attack_requirements, pocbit_page.
In fase di exploit, il PoC tenta prima file_put_contents tramite lo stesso RCE da shortcode di campo per depositare localmente up.php (uploader multipart) sotto percorsi Joomla comuni (images/baforms/uploads/, images/, …), poi conferma POCBIT-102425-OK nella risposta di invio. Se il file è visibile dal web, viene stampato shell_url e aggiunto a exploited.txt.
Python 3.9+
pip install requests urllib3 colorama
cd CVE-2026-102425
python poc.py # interactive
python poc.py hits.txt # mass exploit
python poc.py --check fofa_hosts.txt # mass scan → hits.txt
python poc.py -u https://site.tld
python poc.py --lab
python poc.py --help
# Full CLI / JSONL: python _engine.py --help
Check massivo interattivo (hits.txt, 12 thread, verbose):

| Passo | Richiesta |
|------|---------|
| Caricamento form | GET index.php?option=com_baforms&task=form.loadAjaxForm&id=N |
| Invio | POST all'action del form con task=form.message, form-id, campi (vedi ba-form.js) |
| Da evitare | format=json sui task frontend su molti siti J4 (JSON del controller non valido) |
I siti legacy possono usare view=form&form_id=N o form.submitForm.
Aggiorna Balbooa Forms a 2.4.3.4+.
Rimuovi le azioni PHP-after-submission che incorporano shortcode di campo o URL fino alla patch.
Abilita reCAPTCHA sugli invii pubblici.
Verifica form, utenti amministratori e images/baforms/uploads/.
Solo test di sicurezza autorizzati.
CVE-2026-102425 PoC (PoCbit) — Joomla Balbooa Forms (com_baforms) 1.0.0–2.4.3.3: unauth RCE via field shortcode in PHP-after-submission eval() (CVSS 4.0 9.5 AT:P). check + exploit + mass. https://pocbit.org/pocs/cve-2026-102425