
PoC em Python para CVE-2026-102425: RCE não autenticado no Joomla Balbooa Forms (com_baforms) via injeção de shortcode de campo no eval() de PHP pós-submissão. Modos de verificação, exploração e em massa.
PoC em Python 3 para CVE-2026-102425 — extensão Joomla Balbooa Forms do balbooa.com — execução remota de código não autenticada via injeção de shortcode de campo em ações opcionais de PHP após envio (eval()).
| | |
|---|---|
| PoCbit | https://pocbit.org/pocs/cve-2026-102425 |
| CVE.org | https://www.cve.org/CVERecord?id=CVE-2026-102425 (PUBLICADO 2026-09-29) |
| NVD | https://nvd.nist.gov/vuln/detail/CVE-2026-102425 |
| CNA | Joomla! Project |
| Componente | com_baforms |
| Afetado | 1.0.0 – 2.4.3.3 |
| Correção | ≥ 2.4.3.4 |
| CWE | CWE-94 (Injeção de Código) |
| CVSS 4.0 | 9.5 Crítico — 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 |
| Descobridores | Łukasz Rybak, Sergiy Tryzhychynskyi |
O Balbooa Forms permite que administradores definam código PHP que é executado após o envio de um formulário público. Esse PHP pode conter shortcodes de campos de formulário. Antes do eval(), o componente substitui cada shortcode pelo valor bruto enviado pelo visitante (sem escape).
CVE-2026-102425 é explorável quando todas as condições a seguir são verdadeiras:
Versão da extensão < 2.4.3.4.
Um formulário público usa a ação opcional de PHP após envio.
Esse PHP interpola um shortcode de campo controlado pelo atacante dentro de uma string PHP entre aspas duplas (quebra clássica: ";echo …;//).
CVSS AT:P (Attack Requirements: Present — Requisitos de Ataque: Presentes) significa que a configuração vulnerável deve existir — apenas instalar o componente não é suficiente.
Este não é o CVE-2026-67364 (shortcode de consulta [parâmetro de URL = X], corrigido em 2.4.3.2). Use --include-67364 apenas se você testar intencionalmente esse problema separado.
Mesmo componente, mesma linha de versões: também corrija CVE-2026-102424, -101127, -101112, -101126 (veja mySites.guru).
| Modo | Comportamento |
|------|----------|
| check | com_baforms, versão do manifesto, affected_version (< 2.4.3.4), public_form_detected via loadAjaxForm / embed |
| check hits padrão | hits.txt apenas se afetado e um HTML de formulário público carregar (fila de exploração) |
| check --all-affected | Também lista qualquer host em versão vulnerável (triagem FOFA ruidosa) |
| check --aggressive | Mais caminhos, varredura de ID loadAjaxForm, mais sondagens de formulário |
| exploit | Envio de form.message (moderno) + tarefas legadas; payloads de shortcode de campo (quebra de aspas duplas) |
| exploit --include-67364 | Adiciona tentativas de shortcode de parâmetro de URL (classe 67364) |
| exploit --aggressive | Scrape completo + descoberta via loadAjaxForm (mais lento) |
| --lab | Mock local: eval com aspas duplas + injeção de campo |
| mass | --list + -j → JSONL, hits.txt, exploited.txt |
As linhas JSONL incluem cve_state, cve_record, nvd, cvss_v4_vector, attack_requirements, pocbit_page.
No exploit, o PoC primeiro tenta file_put_contents via o mesmo RCE de shortcode de campo para gravar o up.php local (uploader multipart) sob caminhos comuns do Joomla (images/baforms/uploads/, images/, …), depois confirma POCBIT-102425-OK na resposta de envio. Se o arquivo estiver visível na web, shell_url é impresso e anexado 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 interativo (hits.txt, 12 threads, verbose):

| Etapa | Requisição |
|------|---------|
| Carregar formulário | GET index.php?option=com_baforms&task=form.loadAjaxForm&id=N |
| Enviar | POST para o action do formulário com task=form.message, form-id, campos (veja ba-form.js) |
| Evitar | format=json em tarefas de frontend em muitos sites J4 (JSON de controller inválido) |
Sites legados podem usar view=form&form_id=N ou form.submitForm.
Atualize o Balbooa Forms para 2.4.3.4+.
Remova ações de PHP após envio que incorporem shortcodes de campo ou de URL até que sejam corrigidas.
Ative o reCAPTCHA em envios públicos.
Audite formulários, usuários administradores e images/baforms/uploads/.
Apenas para testes de segurança autorizados.
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