
CVE-2026-65891 PoC — Joomla Content Editor file rename vulnerability (auth required, fixed in JCE 2.20.2)
Scanner de preuve de concept pour CVE-2026-65891 dans l'extension Joomla Content Editor (JCE).
Une validation d'entrée incorrecte dans la fonction rename du gestionnaire de fichiers JCE permet à un utilisateur authentifié disposant de permissions de gestion de fichiers de :
.shell.php)Tests autorisés uniquement. À utiliser sur des systèmes vous appartenant ou pour lesquels vous disposez d'une autorisation explicite de test.
| Champ | Valeur |
|---|---|
| CVE | CVE-2026-65891 |
| Produit | JCE (com_jce) — Widget Factory Limited |
| Affecté | JCE < 2.20.2 (jusqu'à 2.20.1 / 2.9.99.9) |
| Corrigé | JCE 2.20.2+ (2026-07-29) |
| CVSS 3.1 | 6.5 Moyen |
| CWE | CWE-20 — Validation d'entrée incorrecte |
| Authentification | Requise — permissions de téléversement et de renommage JCE |
| KEV | Non |
Ceci n'est pas une RCE non authentifiée. À ne pas confondre avec CVE-2026-48907 (import de profil JCE, sans authentification).
Les gestionnaires de renommage browser / imgmanager de JCE acceptaient des noms de fichiers de destination qui auraient dû être rejetés :
. (cachés sur POSIX)Corrigé dans 2.20.2 : validation de l'extension lors du renommage/copie/déplacement et plus aucun écrasement silencieux.
check (sans identifiants)jce.xml / assetsprobe / exploit (identifiants requis)/administrator/ (ou --frontend-login).txt via plugin.rpc (plugin browser).cve65891_<random>.txt (caché)GET /images/.cve65891_*.txt — si le marqueur est lisible → EXPLOITEDgit clone https://github.com/YOUR_USER/CVE-2026-65891.git
cd CVE-2026-65891
pip install -r requirements.txt
Prérequis : Python 3.10+
# Version / fingerprint scan (bulk, no auth)
python poc_cve_2026_65891.py -f targets.txt -m check -j 30 -o version_hits.txt
# Single target — full check
python poc_cve_2026_65891.py -u https://joomla.example -m check -v
# Authenticated rename test
python poc_cve_2026_65891.py -u https://joomla.example -m probe \
--user editor --pass 'YourPassword' -v
# Session cookie instead of password
python poc_cve_2026_65891.py -u https://joomla.example -m probe \
--cookie-file cookie.txt -v
EXPLOITED https://joomla.example joomla=True jce=True ver=2.20.1 auth=YES upload=YES rename=YES hidden=YES url=https://joomla.example/images/.cve65891_a1b2c3d4.txt
VULNERABLE https://site.example joomla=True jce=True ver=2.9.99.9 rename=YES err=rename_ok_but_hidden_not_readable
SUSPECT https://old.example joomla=True jce=True ver=2.20.1 err=need_auth_--user_--pass_or_--cookie-file
Seules les lignes VULNERABLE et EXPLOITED sont écrites dans -o.
Le compte de test doit disposer d'un profil éditeur JCE avec :
En général : Éditeur, Gestionnaire ou Administrateur — pas un simple utilisateur enregistré.
Mettre à niveau JCE vers 2.20.2 ou une version ultérieure
Extensions → Gérer → Mise à jour ou télécharger depuis joomlacontenteditor.net
En attendant le correctif : désactiver Rename dans les paramètres du profil JCE pour les groupes d'utilisateurs non approuvés (Image Manager, File Browser).
Recherchez les requêtes authentifiées vers :
POST /index.php?option=com_jce&task=plugin.rpc&plugin=browser
Avec method=rename / renameItem et des noms de destination commençant par ..
Fichiers cachés inattendus dans les chemins de téléversement JCE (/images/, /media/).
Cet outil est réservé à la recherche en sécurité, à l'éducation et aux tests d'intrusion autorisés. L'accès non autorisé à des systèmes informatiques est illégal. L'auteur décline toute responsabilité en cas d'utilisation abusive.
MIT — voir LICENSE.
| Option | Description |
|---|
-u, --url | URL de base Joomla unique |
-f, --file | Liste de cibles (une URL par ligne) |
-m, --mode | check · probe · exploit · full (défaut : full) |
-j, --threads | Workers parallèles (défaut : 15) |
-t, --timeout | Délai d'expiration HTTP en secondes (défaut : 25) |
-o, --output | Écrire uniquement les correspondances VULNERABLE / EXPLOITED |
--user | Nom d'utilisateur Joomla |
--pass | Mot de passe Joomla |
--cookie-file | Fichier d'en-tête Cookie: brut (ignore la connexion) |
--upload-dir | Répertoire de téléversement JCE (défaut : images) |
--frontend-login | Connexion via le frontend au lieu de l'administrateur |
-v, --verbose | Sortie de débogage |
| Mode | Authentification | Description |
|---|
check | Non | Joomla + JCE + version |
probe | Oui | Téléversement + renommage caché + vérification |
exploit | Oui | Identique à probe |
full | Oui* | check puis probe (*probe requiert une authentification) |