Sploitus

Exploit for CVE-2026-65891 CVE-2026-48907 CVE-2026-65891

kitploit · 2026-08-25

Exploit Code

MARKDOWN181 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MURREZ-CVE-2026-65891
# CVE-2026-65891 — PoC de Rename para Joomla JCE

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:

  * crear **archivos ocultos** (nombres con prefijo de punto, p. ej. `.shell.php`)
  * **sobrescribir silenciosamente** archivos existentes en la ruta de destino



> **Solo pruebas autorizadas.** Úselo en sistemas que le pertenezcan o sobre los que tenga permiso explícito para probar.

## Resumen de la vulnerabilidad

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).

## Causa raíz

Los manejadores de renombrado `browser` / `imgmanager` de JCE aceptaban nombres de archivo de destino que deberían rechazarse:

  * nombres que comienzan con `.` (ocultos en POSIX)
  * renombrados que reemplazan un archivo existente sin confirmación



Corregido en **2.20.2** : validación de extensiones en renombrar/copiar/mover y sin sobrescritura silenciosa.

## Qué hace este PoC

### `check` (sin credenciales)

  * Detectar la instalación de Joomla + JCE
  * Leer la versión de JCE desde `jce.xml` / assets
  * Marcar versiones **< 2.20.2**



### `probe` / `exploit` (credenciales requeridas)

  1. Inicie sesión vía `/administrator/` (o `--frontend-login`)
  2. Obtenga el token CSRF de Joomla
  3. Suba un `.txt` de marcador vía `plugin.rpc` (plugin `browser`)
  4. Renombre a `.cve65891_<random>.txt` (oculto)
  5. `GET /images/.cve65891_*.txt` — si el marcador se puede leer → **EXPLOITED**



## Instalación

root@kitploit:~
    
    
    git clone https://github.com/YOUR_USER/CVE-2026-65891.git
    cd CVE-2026-65891
    pip install -r requirements.txt
    

**Requisitos:** Python 3.10+

## Uso

root@kitploit:~
    
    
    # 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
    

### Opciones

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  
  
### Modos

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)  
  
## Ejemplo de salida

root@kitploit:~
    
    
    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`.

## Requisitos previos para probe/exploit

La cuenta de prueba debe tener un perfil de editor JCE con:

  * Acceso al **File browser / Image manager**
  * Permiso de **Upload**
  * Permiso de **Rename**



Normalmente: Editor, Manager o Administrator, no un simple usuario registrado.

## Mitigación

  1. Actualice JCE a **2.20.2** o posterior  
`Extensions → Manage → Update` o descárguelo desde joomlacontenteditor.net

  2. 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).




## Detección

Busque solicitudes autenticadas a:

root@kitploit:~
    
    
    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/`).

## Aviso legal

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.

## Referencias

  * NVD — CVE-2026-65891
  * JCE — joomlacontenteditor.net
  * OpenCVE



## Licencia

MIT — consulte LICENSE.