Validación defensiva en laboratorio y guía de detección para el SOC para CVE-2026-48907 en Joomla JCE <= 2.9.99.4, incluyendo telemetría de Apache/Joomla/auditd, artefactos de webshell, reglas Sigma, mapeo MITRE ATT&CK y recomendaciones de mitigación.
Informe de validación defensiva y notas de detección orientadas a SOC para CVE-2026-48907 que afecta a Joomla Content Editor (JCE) versiones hasta 2.9.99.4.
Este repositorio documenta una validación de laboratorio controlada de CVE-2026-48907 en Joomla JCE y se centra en la ingeniería de detección práctica para equipos SOC.
El objetivo no es proporcionar guías de explotación. El objetivo es mostrar qué fuentes de telemetría fueron útiles durante la validación, qué artefactos se crearon y cómo los defensores pueden detectar y responder a esta actividad.
| Área | Hallazgo |
|---|---|
| Vulnerabilidad | CVE-2026-48907 en Joomla Content Editor (JCE); flujo de creación/importación de perfiles no autenticado que puede llevar a la subida de PHP y ejecución de código. |
| Versión probada | JCE 2.9.99.4. El panel de administración de Joomla mostró una actualización disponible a 2.9.99.7. |
| Resultado del laboratorio | La validación pública de PoC confirmó RCE y creó un webshell PHP en /tmp de Joomla como jce*.xml.php. Los comandos se ejecutaron como www-data. |
| Telemetría más valiosa | Apache access.log, Apache/PHP error.log, telemetría execve de auditd y artefactos del sistema de archivos en joomla_html/tmp. |
| Registros de Joomla | Útiles como contexto de apoyo, pero insuficientes por sí solos. Los registros de la aplicación Joomla no reconstruyeron la cadena completa: exploit → webshell → ejecución de comandos. |
| Prioridad SOC | Crítica para instancias de Joomla expuestas a Internet o instancias de Joomla accesibles desde redes internas menos confiables. |
| Parámetro | Valor |
|---|---|
| URL de la aplicación | http://172.20.10.3:9999 |
| Contenedor Joomla | joomla-jce-lab, imagen joomla:5-apache |
| Contenedor de base de datos | joomla-jce-db, imagen mariadb:11 |
| Mapeo de puertos | 0.0.0.0:9999 -> 80/tcp |
| Apache | Apache/2.4.67 (Debian) |
| PHP | PHP 8.3.31 |
| MariaDB | 11.8.8-MariaDB |
| Joomla | Joomla 5.4.6 Stable |
| JCE | 2.9.99.4 |
| Origen de prueba | Windows 11, IP 172.20.10.2 |
| Registro | Logs de acceso/error de Apache, logs de Joomla, auditd, logs de Docker, artefactos del sistema de archivos |







Un hallazgo operativo clave es que los registros de la aplicación Joomla no fueron suficientes.
Durante la prueba de laboratorio, los registros de Joomla registraron contexto a nivel de aplicación, como un evento joomlafailure, pero no mostraron la cadena completa de explotación. La cadena útil fue visible principalmente en:
access.logerror.logexecve de auditdjoomla_html/tmpPara la monitorización del SOC, los registros de Joomla deben tratarse como telemetría de apoyo, no como la fuente principal de detección para esta vulnerabilidad.
Cadena de alto nivel observada durante la prueba controlada:
JCE version discovery
↓
POST to Joomla JCE component
↓
PHP webshell written to Joomla /tmp
↓
HTTP request to /tmp/jce*.xml.php
↓
Command execution through webshell
↓
auditd confirms /usr/bin/dash and commands executed as www-data
La evidencia más clara estaba presente en Apache access.log:
GET /plugins/editors/jce/jce.xml
GET /
POST /index.php?option=com_jce
GET /tmp/jceolxtshs3.xml.php
GET /plugins/editors/jce/jce.xml
POST /index.php?option=com_jce
GET /tmp/jce624jdcfx.xml.php
GET /tmp/jce624jdcfx.xml.php?c=id%20%26%26%20hostname%20%26%26%20pwd
GET /tmp/jce624jdcfx.xml.php?c=whoami
GET /tmp/jce624jdcfx.xml.php?c=hostname
GET /tmp/jce624jdcfx.xml.php?c=id
GET /tmp/jce624jdcfx.xml.php?c=pwd
El registro de errores de Apache/PHP contenía trazas valiosas relacionadas con el analizador:
simplexml_load_string()
administrator/components/com_jce/helpers/profiles.php
RXST
RXEND
Los marcadores RXST y RXEND fueron indicadores particularmente útiles para esta familia específica de PoC porque aparecieron en la ruta de manejo del payload.
Los registros de Joomla confirmaron que el registro de la aplicación estaba activo, pero no reconstruyeron la explotación:
#Software: Joomla! 5.4.6 Stable [ Kutegemea ] 26-May-2026 16:00 GMT
#Fields: datetime priority clientip category message
2026-06-18T20:37:57+00:00 INFO 172.20.10.2 joomlafailure Username and password do not match or you do not have an account yet.
Esto significa que recolectar solo los registros de Joomla puede perder la evidencia más importante de la explotación de CVE-2026-48907.
La prueba creó archivos de webshell PHP en tmp de Joomla:
/var/www/html/tmp/jce624jdcfx.xml.php
/var/www/html/tmp/jceolxtshs3.xml.php
Rutas del lado del host en el laboratorio:
/home/user/joomla-jce-lab/joomla_html/tmp/jce624jdcfx.xml.php
/home/user/joomla-jce-lab/joomla_html/tmp/jceolxtshs3.xml.php
Hashes SHA256 observados: