
CVE-2026-65891 PoC — Joomla Content Editor file rename vulnerability (auth required, fixed in JCE 2.20.2)
Escáner de prueba de concepto para CVE-2026-65891 en la extensión Joomla Content Editor (JCE).
La validación de entrada incorrecta en la función rename del administrador de archivos de JCE permite a un usuario autenticado con permisos de gestión de archivos:
.shell.php)Solo pruebas autorizadas. Úselo en sistemas que le pertenezcan o sobre los que tenga permiso explícito para probar.
| Campo | Valor |
|---|---|
| CVE | CVE-2026-65891 |
| Producto | JCE (com_jce) — Widget Factory Limited |
| Afectado | JCE < 2.20.2 (hasta 2.20.1 / 2.9.99.9) |
| Corregido | JCE 2.20.2+ (2026-07-29) |
| CVSS 3.1 | 6.5 Media |
| CWE | CWE-20 — Validación de entrada incorrecta |
| Autenticación | Requerida — permisos de subida y renombrado de JCE |
| KEV | No |
Esto no es RCE sin autenticar. No lo confunda con CVE-2026-48907 (importación de perfil de JCE, sin autenticación).
Los manejadores de renombrado browser / imgmanager de JCE aceptaban nombres de archivo de destino que deberían rechazarse:
. (ocultos en POSIX)Corregido en 2.20.2: validación de extensiones en renombrar/copiar/mover y sin sobrescritura silenciosa.
check (sin credenciales)jce.xml / assetsprobe / exploit (credenciales requeridas)/administrator/ (o --frontend-login).txt de marcador vía plugin.rpc (plugin browser).cve65891_<random>.txt (oculto)GET /images/.cve65891_*.txt — si el marcador se puede leer → EXPLOITEDgit clone https://github.com/YOUR_USER/CVE-2026-65891.git
cd CVE-2026-65891
pip install -r requirements.txt
Requisitos: 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
Solo las líneas VULNERABLE y EXPLOITED se escriben en -o.
La cuenta de prueba debe tener un perfil de editor JCE con:
Normalmente: Editor, Manager o Administrator, no un simple usuario registrado.
Actualice JCE a 2.20.2 o posterior
Extensions → Manage → Update o descárguelo desde joomlacontenteditor.net
Hasta que se aplique el parche: deshabilite Rename en la configuración del perfil de JCE para los grupos de usuarios no confiables (Image Manager, File Browser).
Busque solicitudes autenticadas a:
POST /index.php?option=com_jce&task=plugin.rpc&plugin=browser
Con method=rename / renameItem y nombres de destino que comiencen con ..
Archivos ocultos inesperados en las rutas de subida de JCE (/images/, /media/).
Esta herramienta es solo para investigación de seguridad, educación y pruebas de penetración autorizadas. El acceso no autorizado a sistemas informáticos es ilegal. El autor no asume ninguna responsabilidad por el mal uso.
MIT — consulte LICENSE.
| Flag | Descripción |
|---|
-u, --url | URL base de un solo Joomla |
-f, --file | Lista de objetivos (una URL por línea) |
-m, --mode | check · probe · exploit · full (predeterminado: full) |
-j, --threads | Trabajadores paralelos (predeterminado: 15) |
-t, --timeout | Tiempo de espera HTTP en segundos (predeterminado: 25) |
-o, --output | Escribir solo las coincidencias VULNERABLE / EXPLOITED |
--user | Usuario de Joomla |
--pass | Contraseña de Joomla |
--cookie-file | Archivo con la cabecera Cookie: sin procesar (omite el inicio de sesión) |
--upload-dir | Directorio de subida de JCE (predeterminado: images) |
--frontend-login | Iniciar sesión a través del frontend en lugar del administrador |
-v, --verbose | Salida de depuración |
| Modo | Autenticación | Descripción |
|---|
check | No | Joomla + JCE + versión |
probe | Sí | Subida + renombrado oculto + verificación |
exploit | Sí | Igual que probe |
full | Sí* | check y luego probe (*probe requiere autenticación) |